汇编基础语法和指令总结+案例(用32位汇编实现插入排序)
创始人
2024-05-29 02:49:41
0

目录

前提知识

案例 

c的插入排序

32位汇编代码

代码分析

效果展示


前提知识

  • 常用指令

add指令
sub指令
mul乘法指令
div除法指令
inc(自增)(即++)
dec(自减)(即--)

cmp(比较)

  • 寄存器

•EAX:累加器 多用于存放中间运算结果 •EBX:基址寄存器 在间接寻址中用于存放基地址 •ECX:计数寄存器 用于在循环或串操作指令中存放循环次数或重复次数; •EDX:数据寄存器 在32位乘除法运算时,存放高32位数
  • 分支结构
比较指令: cmp x,y 跳转指令: jmp, jXXX(ja, jb, jz) cmp x, y 语义: 执行操作 x-y (x与y的值不变),根据操作结果改 变EFLAG相应的位。 ja loc: 若x与y是无符号数(程序员定义)且 x>y,则程序跳转到地址loc处执行 jz/je loc: 若x与y是无符号数(程序员定义)且 x==y,则程序跳转到地址loc处执行 jb loc: 若x与y是无符号数(程序员定义)且 xjg loc: 若x与y是有符号数(程序员定义)且 x>y,则程序跳转到地址loc处执行 jz/je loc: 若x与y是有符号数(程序员定义)且 x==y,则程序跳转到地址loc处执行 jl loc: 若x与y是有符号数(程序员定义)且 x
  • 输出输入
数据移送指令:mov dest,src 函数调用指令:Call f 输入输出函数 ReadInt PROC uses ebx ecx edx esi 输入:无 返回值: CF=0, 输入存在EAX CF=1, 输入无效,EAX=0 WriteInt proc 输入:显示的整数存在EAX 返回值: 无
  • 基础格式
INCLUDE Irvine32.inc
.data
.code
final:
exit
main ENDP
END main

案例 

c的插入排序

void InsertSortArray ( int arr[], int n){
int arr[]={2,99,3,1,22,88,7,77,54};
for (int i = 1; i < n; i++){
int temp = arr[i];
while (i >= 0 && arr[i - 1] > temp){
arr[i] = arr[i - 1];
i--;
}
arr[i] = temp;
}
}

32位汇编代码

INCLUDE Irvine32.inc
.data
arr dd 2,99,3,1,22,88,7,77,54
arr_len dd 9
a dd 1 ;直接下标
.code
main PROCmov ecx,arr_len ;数组长度mov edx,1 ;临时数值交换区间mov ebx,1 ;间接下标寻址,ebx=isub ecx,1 ;外层循环次数again1:mov ebx,amov eax,arr[ebx*4]  ;eax=tempjd:cmp ebx,0jb L1mov edx,ebxsub edx,1mov ESI,arr[edx*4]cmp ESI,eaxjbe L1mov arr[ebx*4],ESIsub ebx,1jmp jdL1:mov arr[ebx*4],eaxadd a,1loop again1mov ebx,0again2:cmp ebx,arr_lenjae finalmov eax,arr[ebx*4]call WriteIntadd ebx,1jmp again2final:exit
main ENDP
END main

代码分析

这里通过ecx和loop控制外层循坏次数为len-1次以实现源代码中的for循环,从数组第二位开始插向前面的有序数列,这里对while中的判定条件进行取反,当不满足条件时跳出while循环,并将temp的值即为eax赋值给此时数组i下标的位置,while循环满足时依次将数组的元素后移腾出插入元素的位置,排序完成后call writenint循环将数组的元素打印出来即为有序数列

效果展示

相关内容

热门资讯

清朝有很多有名的历史人物,能给... 清朝有很多有名的历史人物,能给大家说几个清朝的历史人物吗?林则徐,张之洞,乾隆皇帝,曾国藩,朱耷,这...
曹丕的“太子四友”指的是谁 曹丕的“太子四友”指的是谁首先说,曹丕这四个,陈群司马懿是顶级的谋士和政治家,吴质有些小聪明,朱铄不...
在这次遇难者中存在了几名幸存者... 在这次遇难者中存在了几名幸存者。这句话是不是逻辑错误这句话的逻辑没有问题,有问题的是用词不当。遇难者...
在中国古代,有许多充满哲学智慧... 在中国古代,有许多充满哲学智慧的成语典故、寓言故事,如...在中国古代,有许多充满哲学智慧的成语典故...
清澈的意思是什么,… 清澈的意思是什么,…清净而明澈清而透明【造句】看着他清澈而又天真的眼眸,我的心久久不能平静……
蚂蚁森林合种爱情树一方退出怎么... 蚂蚁森林合种爱情树一方退出怎么找回来两个人合种的爱情树,我退出来,我怎么再次加入进去继续合作那个树?...
有好看的古代修炼小说推荐吗? 有好看的古代修炼小说推荐吗?古代重生穿越修炼......让我帮你找一下这些古代修炼的小说,找到这些类...
女主重生爱上前世辜负的人 女主重生爱上前世辜负的人重生我是你正妻渣女重生之竹马重生之弃渣重生之夫君可欺重生之换我疼你重生妇归来...
华胥引有广播剧吗 华胥引有广播剧吗现有的华胥引的广播剧是忆语广播剧社出品的,只有十三月和杯(这个是错字,请无视,居然输...
选文韩麦尔先生在说了,我的朋友... 选文韩麦尔先生在说了,我的朋友们我就要离开你们呢了,再见了银头鲑鱼tj75rt6yturdrruv ...
中通快递从北京保定市到广东揭阳... 中通快递从北京保定市到广东揭阳普宁要多久?中通快递从北京保定市到广东揭阳普宁要多久?从北京到广东需要...
关于离婚悲伤的歌曲 关于离婚悲伤的歌曲关于离婚悲伤的歌曲林俊杰《可惜没如果》 张靓颖《我走以后》 金志文《流着泪说分手》...
形容文笔差怎么说啊? 形容文笔差怎么说啊?哥哥姐姐,麻烦问下,我是做文员的,形容文案方面的工作很差应该怎么说啊?粗鄙怎么样...
我想做未婚妈妈,可行吗? 我想做未婚妈妈,可行吗?没关系吧?我同学好多他们妈妈都是30岁以后省得他们,都没事啊,但是如果你自己...
如何在两个excel表格里筛选... 如何在两个excel表格里筛选出重复的名字如何在两个excel表格里筛选出重复的名字1、电脑打开EX...
且试天下 哪些小说是用白绫做武... 且试天下 哪些小说是用白绫做武器的?神雕侠侣吖- -..小龙女一开始就是用白绫的聊斋 辛十四娘嘿嘿~...
自带高冷体质,笑起来温暖又治愈... 自带高冷体质,笑起来温暖又治愈的星座,你了解吗?虽然天生高冷体质,但是笑起来特别的温暖治愈的新作用天...
火星未解之谜 火星未解之谜多列举一些,每个事例最好长一点,谢啦~“火星人脸”, “地表被水冲击河道”,“原始大气和...
我是1991年10月4号生的,... 我是1991年10月4号生的,是什么星座啊有的说是处女座有的说是天平座,糊涂了,到底是什么啊很负责任...
梦见白狐狸,然后当时我骑着自行... 梦见白狐狸,然后当时我骑着自行车,我想躲开它,他很凶的的追赶我,最后它向我扑了过来,然后我就醒乐.你...