版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、汇编语言-指令系统整理总结对于计算机软件专业的学生,适当的学习一些汇编语言知识,我认为很重要,有助于你对于计算机底层工作的了解,帮助你更好的理解计算机高级语言,汇编原理,也对于学习操作系统很有帮助. 近来自己在学汇编语言. 整理总结了常用的一些指令,认为对于学习汇编的龙友会有一些帮助每条指令 均按照1、指令的汇编格式2、指令的基本功能3、指令的寻址方式4、指令对标志位的影响5、指令的特殊要求这5条内容的形式来对每条指令进行归纳总结. 数据传送指令一、通用数据传送指令1、传送指令 mov (move)指令的汇编格式:mov dst,src 指令的基本功能:(dst)<-(src) 将原操作
2、数(字节或字)传送到目的地址。指令支持的寻址方式:目的操作数和源操作数不能同时用存储器寻址方式,这个限制适用于所有指令。指令的执行对标志位的影响:不影响标志位。指令的特殊要求:目的操作数dst和源操作数src不允许同时为段寄存器; 目的操作数dst不能是cs,也不能用立即数方式。2、进栈指令 push (push onto the stack) 出栈指令 pop (pop from the stack)指令的汇编格式:push src ;pop dst指令的基本功能:push指令在程序中常用来暂存某些数据,而pop指令又可将这些数据恢复。 push src (sp)<-(sp)-2 ;(
3、sp)<-(src) pop dst (dst)<-(sp);(sp)<-(sp)指令支持的寻址方式:push 和 pop指令不能不能使用立即数寻址方式。指令对标志位的影响:push 和 pop指令都不影响标志位。指令的特殊要求:push 和 pop指令只能是字操作,因此,存取字数据后,sp的修改必须是+2 或者 -2; pop指令的dst不允许是cs寄存器;3、交换指令 xchg (exchange)指令的汇编格式:xchg opr1,opr2指令的基本功能:(opr1)<->(opr2)指令支持的寻址方式:一个操作数必须在寄存器中,另一个操作数可以在寄存器或存
4、储器中。指令对标志位的影戏:不影响标志位。指令的特殊要求:不允许使用段寄存器。二、累加器专用传送指令 4、输入指令 in (input) 输出指令 out (output)指令的汇编格式:in ac,port port<=0ffh in ac,dx port>0ffh out port,ac port<=0ffh out dx,ac port>0ffh指令的基本功能:对8086及其后继机型的微处理机,所有i/o端口与cpu之间的通信都由输入输出指令in和out来完成。in指令将信息从i/o输入到cpu,out指令将信息从cpu输出到i/o端口,因此,in和out指令都要
5、指出i/o端口地址。 in ac,port port<=0ffh (al)<-(port)传送字节 或 (ax)<-(port+1,port)传送字 in ac,dx port>0ffh (al)<-(dx)传送字节 或 (ax)<-(dx)+1,(dx)传送字 out port,ac port<=0ffh (port)<-(al)传送字节 或 (port+1,port)<-(ax)传送字 out dx,ac port>0ffh (dx)<-(al)传送字节 或 (dx)+1,(dx)<-(ax)传送字指令对标志位的影响:
6、不影响标志位。指令的特殊要求:只限于在al或ax与i/o端口之间传送信息。 传送16位信息用ax,传送8位信息用al,这取决于外设端口的宽度。 5、换码指令 xlat (translate)指令的汇编格式:xlat opr 或 xlat指令的基本功能:这条指令根据al寄存器提供的位移量,将bx指使的字节表格中的代码换存在al中。 (al)<-(ds)*16+(bx)+(al)指令对标志位的影响:不影响标志位。指令的特殊要求:所建字节表格的长度不能超过256字节,因为存放位移量的是8位寄存器al。 opr为表格的首地址,因为opr所表示的偏移地址已存入bx寄存器,所以opr在换码指令中可有
7、可无,有则提高程序的可读性。三、地址传送指令6、有效地址传送器 lea (load effective address)指令的汇编格式:lea reg,src指令的基本功能:lea指令把源操作数的有效地址送到指定的寄存器,这个有效地址是由src选定的一种存储器寻址方式确定的。指令支持的寻址方式:各种存储器寻址方式。指令对标志位的影响:不影响标志位。指令的特出要求:指令中reg不能是段寄存器;7、指针送寄存器和ds lds (load ds with point) 指针送寄存器和es les (load es with point)指令的汇编格式:lds reg,src les reg,src指
8、令的基本功能:lds和les指令把确定内存单元位置的偏移地址送寄存器,段地址ds或es。这个偏移地址和段地址(也称地址指针)是由src指定的两个相继字单元提供的。 lds reg,src (reg)<-(src) (ds)<-(src+2) les reg,src (reg)<-(src) (es)<-(src+2)指令支持的寻址方式:src必须为存储器寻址方式指令对标志位的影响:不影响标志位。指令的特殊要求:指令中reg不能是段寄存器;四、标志寄存器传送指令8、标志寄存器的低字节送ah lahf (load ah with flags)指令的汇编格式:lahf指令的基
9、本功能:(ah)<-(flags)0-7指令对标志位的影响:不影响标志位9、ah送标志寄存器低字节 sahf(store ah into flags)指令的汇编格式:sahf指令的基本功能:(flags)0-7<-(ah)指令对标志位的影响:由装入值来确定标志位的值。10、标志进栈 pushf (push the flags)指令的汇编格式:pushf指令的基本功能:(sp)<-(sp)-2 (sp)+1,(sp)<-(flags)0-15指令对标志位的影响:不影响标志位。11、标志出栈 popf (pop the flages)指令的汇编格式:popf指令的基本功能:
10、(flags)0-15<-(sp)+1,(sp) (sp)<-(sp)+2指令对标志位的影响:由装入值来确定标志位的值。算术指令一、加法指令12、加法指令 add (addition)指令的汇编格式:add dst,src指令的基本功能:(dst)<-(src)+(dst)指令支持的寻址方式:他们两个操作数不能同时为存储器寻址。即为除源操作数为立即数的情况外,源操作数和目地操作数必须有一个寄存器寻址方式。指令对标志位的影响:sf=1 加法结果为负数(符号位为1) sf=0 加法结果为正数(符号位为0) zf=1 加法结果为零 zf=0 加法结果不为零 cf=1 最高有效位向高
11、位有进位 cf=0 最高有效位向高位无进位 of=1 两个同符号数相加(正数+正数 或 负数+负数),结果符号与其相反。 of=0 两个不同符号数相加,或同符号数相加,结果符号与其相同。13、带进为加法指令 adc (add with carry)指令的汇编格式:add dst,src指令的基本功能:(dst)<-(src)+(dst)+cf指令支持的寻址方式:他们两个操作数不能同时为存储器寻址。即为除源操作数为立即数的情况外,源操作数和目地操作数必须有一个寄存器寻址方式。指令对标志位的影响:sf=1 加法结果为负数 sf=0 加法结果为正数 zf=1 加法结果为零 zf=0 加法结果不
12、为零 cf=1 最高有效位向高位有进位 cf=0 最低有效位相高位无进位 of=1 两个同符号数相加,结果符号与其相反, of=0 两个同符号数相加,或同符号相加,结果符号与其相同14、加1指令 inc (increament)指令的汇编格式:inc opr指令的基本功能:(opr)<-(opr)指令支持的寻址方式 可以使用除立即数方式外的任何寻址方式指令对标志位的影响:sf=1 加法结果为负数 sf=0 加法结果为正数 zf=1 加法结果为零 zf=0 加法结果不为零 of=1 两个同符号数相加,结果符号与其相反, of=0 两个同符号数相加,或同符号相加,结果符号与其相同。二、减法指
13、令15、减法指令 sub (subtract)指令的汇编格式:sub dst,src指令的基本功能:(dst)<-(dst)-(src)指令支持的寻址方式:他们两个操作数不能同时为存储器寻址。即为除源操作数为立即数的情况外,源操作数和目地操作数必须有一个寄存器寻址方式。指令对标志位的影响:sf=1 减法结果为负数(符号位为1) sf=0 减法结果为正数(符号位为0) zf=1 减法结果为零 zf=0 减法结果不为零 cf=1 二进制减法运算中最高有效位向高位有借位(被减数小于减数,不够减的情况) cf=0 二进制减法运算中最高有效为向高位无借位(被减数=减数,够减的情况) of=1 两数
14、符号相反(正数-负数,或负数-正数),而结果符号与减数相同。 of=0 同符号数相减时,或不同符号数相减,其结果符号与减数不同。16、带借位减法指令 sbb (subtract with borrow)指令的汇编格式:sbb dst,src指令的基本功能:(dst)<-(dst)-(src)-cf指令支持的寻址方式:他们两个操作数不能同时为存储器寻址。即为除源操作数为立即数的情况外,源操作数和目地操作数必须有一个寄存器寻址方式。指令对标志位的影响:sf=1 减法结果为负数(符号位为1) sf=0 减法结果为正数(符号位为0) zf=1 减法结果为零 zf=0 减法结果不为零 cf=1 二
15、进制减法运算中最高有效位向高位有借位(被减数小于减数,不够减的情况) cf=0 二进制减法运算中最高有效为向高位无借位(被减数=减数,够减的情况) of=1 两数符号相反(正数-负数,或负数-正数),而结果符号与减数相同。 of=0 同符号数相减时,或不同符号数相减,其结果符号与减数不同。17、减1指令 dec (decrement)指令的汇编格式:dec opr指令的基本功能:(opr)<-(opr)-1指令支持的寻址方式:可以使用除立即数方式外的任何寻址方式。指令对标志位的影响:sf=1 减法结果为负数(符号位为1) sf=0 减法结果为正数(符号位为0) zf=1 减法结果为零 z
16、f=0 减法结果不为零 of=1 两数符号相反(正数-负数,或负数-正数),而结果符号与减数相同。 of=0 同符号数相减时,或不同符号数相减,其结果符号与减数不同。 18、比较指令 cmp (compare)指令的汇编格式:cmp opr1,opr2指令的基本功能:(opr1)-(opr2),根据相减结果设置条件码,但不回送结果。指令支持的寻址方式:他们两个操作数不能同时为存储器寻址。即为除源操作数为立即数的情况外,源操作数和目地操作数必须有一个寄存器寻址方式。指令对标志位的影响:sf=1 减法结果为负数(符号位为1) sf=0 减法结果为正数(符号位为0) zf=1 减法结果为零 zf=0
17、 减法结果不为零 cf=1 二进制减法运算中最高有效位向高位有借位(被减数小于减数,不够减的情况) cf=0 二进制减法运算中最高有效为向高位无借位(被减数=减数,够减的情况) of=1 两数符号相反(正数-负数,或负数-正数),而结果符号与减数相同。 of=0 同符号数相减时,或不同符号数相减,其结果符号与减数不同。19、求补指令 neg (negate)指令的汇编格式:neg opr 指令的基本功能:(opr)<- -(opr)指令支持的寻址方式:可以使用除立即数方式外的任何寻址方式。指令对标志位的影响:cf=1 不为0的操作数求补时 cf=0 为0的操作数求补时 of=1 操作数为
18、-128(字节运算)或操作数为-32768(字运算) of=0 当求补运算的操作数不为128(字节)或32768(字)时三、乘法指令20、无符号乘法指令 nul (unsigned multiple) 有符号乘法指令 imul(signed muliple)指令的汇编格式:nul src imul src指令的基本功能:(ax)<-(al)*(src) (dx,ax)<-(ax)*(src)指令支持的寻址方式:src可以使用除立即数方式以外的任一种寻址方式。指令对标志位的影响:乘法指令只影响标志位cf和of,其他条件码位无定义。 mul指令的条件码设置为: cf of=0 0 乘积
19、的高一半为0(字节操作的(ah)或字操作的(dx) cf of=1 1 乘积的高一半不为0 imul指令的条件码设置为: cf of=0 0 乘积的高一半为低一半的符号扩展. cf of=1 1 其他情况指令的特殊要求:mul和imul指令的区别仅在于操作数是无符号还是带符号数,它们的共同点是,指令中只给出源操作数src,目的操作数是隐含的,它只能是累加器(字运算为ax,字节运算为al)。隐含的乘积寄存器是ax或dx(高位)和ax(低位)。四、符号扩展指令21、节扩展为字 cbw (convert byte to word)指令的汇编格式:cbw指令的基本功能:(ah)=00h 当(al)的最
20、高有效位为0时 (ah)=ffh 当(al)的最高有效位为1时指令对标志位的影响:不影响标志位指令的特殊要求:这是条无操作数的指令,进行符号扩展的操作数必须存放在al寄存器或ax寄存器中。22、字扩展为双字 cwd (convert word to double word)指令的汇编格式:cwd指令的基本功能:(dx)=0000h 当(ax)的最高有效位为0时 (dx)=ffffh 当(ax)的最高有效位为1时指令对标志位的影响:不影响标志位指令的特殊要求:这是条无操作数的指令,进行符号扩展的操作数必须存放在al寄存器或ax寄存器中。五、除法指令23、无符号数除法 div (unsigned
21、divide) 带符号数除法 idiv (singed divide)指令的汇编格式:div src idiv src指令的基本功能:字操作 (al)<-(ax)/src的商 (ah)<-(ax)/src的余数 字节操作 (ax)<-(dx,ax)/src的商 (dx)<-(dx,ax)/src的余数指令支持的寻址方式:src作为除数,可用除立即数以外的任一种寻址方式来取得。指令对标志位的影响:不影响条件码。指令的特殊要求:除法指令要求字操作时,被除数必须为32位,除数是16位,商和余数是16位的; 字节操作时,被除数必须为16位,除数是8位,得到的商和余数是8位的。
22、六、十进制调整指令逻辑指令一、逻辑运算24、逻辑与 and (logic and)指令的汇编格式:and dst,src指令的基本功能:(dst)<-(dst)与(src)指令支持的寻址方式:两个操作数不能同时为存储器寻址。即为除源操作数为立即数的情况外,源操作数和目地操作数必须有一个寄存器寻址方式。指令对标志位的影响:指令执行后 cf 和 of 置零,af无定义。 sf=1 指令执行后的结果为负数(符号位为1) sf=0 指令执行后的结果为正数(符号位为0) zf=1 指令执行后的结果为零 zf=0 指令执行后的结果不为零 pf=1 结果操作数中1的个数为偶数时置1 pf=0 结果操作
23、数中1的个数为奇数时置025、逻辑或 or (logic or)指令的汇编格式:or dst,src指令的基本功能:(dst)<-(dst)或(src)指令支持的寻址方式:两个操作数不能同时为存储器寻址。即为除源操作数为立即数的情况外,原操作数和目的操作数必须有一个寄存器寻址方式。指令对标志位的影响:令执行后 cf 和 of 置零,af无定义。 sf=1 指令执行后的结果为负数(符号位为1) sf=0 指令执行后的结果为正数(符号位为0) zf=1 指令执行后的结果为零 zf=0 指令执行后的结果不为零 pf=1 结果操作数中1的个数为偶数时置1 pf=0 结果操作数中1的个数为奇数时置
24、026、逻辑非 not (logic not)指令的汇编格式:not orc指令的基本功能:(dst)<-(opr)指令支持的寻址方式:除立即数寻址方式以外的其余寻址方式指令对标志位的影响:对标志位无影响27、异或 xor (exclusice or)指令的汇编格式:xor dst,src指令的基本功能:(dst)<-(dst)异或(src)指令支持的寻址方式:两个操作数不能同时为存储器寻址。即为除源操作数为立即数的情况外,原操作数和目的操作数必须有一个寄存器寻址方式。指令对标志位的影响:令执行后 cf 和 of 置零,af无定义。 sf=1 指令执行后的结果为负数(符号位为1)
25、sf=0 指令执行后的结果为正数(符号位为0) zf=1 指令执行后的结果为零 zf=0 指令执行后的结果不为零 pf=1 结果操作数中1的个数为偶数时置1 pf=0 结果操作数中1的个数为奇数时置028、测试指令 test指令的汇编格式:test opr1,opr2指令的基本功能:(opr1)与(opr2)指令支持的寻址方式:两个操作数不能同时为存储器寻址,即为除源操作数为立即数的情况外,源操作数和目的操作数必须有一个寄存器寻址方式。指令对标志位的影响:令执行后 cf 和 of 置零,af无定义。 sf=1 指令执行后的结果为负数(符号位为1) sf=0 指令执行后的结果为正数(符号位为0)
26、 zf=1 指令执行后的结果为零 zf=0 指令执行后的结果不为零 pf=1 结果操作数中1的个数为偶数时置1 pf=0 结果操作数中1的个数为奇数时置0 二、移位指令29、逻辑左移 shl (shift logical left)指令的汇编格式:shl dst,cnt指令的基本功能:shl指令向左逐位移动cnt次,每次逐位移动后,最低位用0来补充,最高位移入cf。指令支持的寻址方式:目的操作数dst可以是除立即数外的任何寻址方式。移位次数(或位数)cnt=1时,1可以直接写在指令中,cnt1时,cnt必须放入cl寄存器中。指令对标志位的影响:cf=移入的数值 of=1 当cnt=1时,移动后
27、最高位的值发生变化。 of=0 当cnt=1时,移动时最高位的值未发生变化。 sf、zf、pf根据移动后的结果设置。30、逻辑右移 shr (shift logical right)指令的汇编格式:shr dst,cnt指令的基本功能:shr指令向右逐位移动cnt次,每次逐位移动后,最高位用0来补充,最低位移入cf。指令支持的寻址方式:目的操作数dst可以是除立即数外的任何寻址方式。移位次数(或位数)cnt=1时,1可以直接写在指令中,cnt1时,cnt必须放入cl寄存器中。指令对标志位的影响:cf=移入的数值 of=1 当cnt=1时,移动后最高位的值发生变化。 of=0 当cnt=1时,移
28、动时最高位的值未发生变化。 sf、zf、pf根据移动后的结果设置。31、算术左移 sal (shift arithmetic left)指令的汇编格式:sal dst cnt指令的基本功能:sal指令向左逐位移动cnt次,每次逐位移动后,最低位用0来补充,最高位移入cf。指令支持的寻址方式:目的操作数dst可以是除立即数外的任何寻址方式。移位次数(或位数)cnt=1时,1可以直接写在指令中,cnt1时,cnt必须放入cl寄存器中。指令对标志位的影响:cf=移入的数值 of=1 当cnt=1时,移动后最高位的值发生变化。 of=0 当cnt=1时,移动时最高位的值未发生变化。 sf、zf、pf根
29、据移动后的结果设置。32、算术右移 sar (shift arithmetic right)指令的汇编格式:sar dst,cnt指令的基本功能:sar指令向右逐位移动cnt次,每次逐位移动后,最高位用符号位来补充,最低位移入cf。指令支持的寻址方式:目的操作数dst可以是除立即数外的任何寻址方式。移位次数(或位数)cnt=1时,1可以直接写在指令中,cnt1时,cnt必须放入cl寄存器中。指令对标志位的影响:cf=移入的数值 of=1 当cnt=1时,移动后最高位的值发生变化。 of=0 当cnt=1时,移动时最高位的值未发生变化。 sf、zf、pf根据移动后的结果设置。33、循环左移 ro
30、l (rotate left)指令的汇编格式:rol dst,cnt指令的基本功能:rol 对由dst指定的寄存器或存储器操作数左移循环移动cnt所指定的次数,每左移一次,把最高位同时移入cf和操作数最低位。指令支持的寻址方式:目的操作数dst可以是除立即数外的任何寻址方式。移动次数(或位数)cnt=1时,1可以直接写在指令中,cnt1时,cnt必须放入cl寄存器中。指令对标志位的影响:cf=移入的数值 of=1 当cnt=1时,移动后最高位的值发生变化。 of=0 当cnt=1时,移动时最高位的值未发生变化。 sf、zf、pf根据移动后的结果设置。34、循环右移 ror (rotate ri
31、ght)指令的汇编格式:ror dst,cnt指令的基本功能:ror 对由dst指定的寄存器或存储器操作数右移循环移动cnt所指定的次数,每右移一次,把最低位同时移入cf和操作数最高位。指令支持的寻址方式:目的操作数dst可以是除立即数外的任何寻址方式。移动次数(或位数)cnt=1时,1可以直接写在指令中,cnt>1时,cnt必须放入cl寄存器中。指令对标志位的影响:cf=移入的数值 of=1 当cnt=1时,移动后最高位的值发生变化。 of=0 当cnt=1时,移动时最高位的值未发生变化。 sf、zf、pf根据移动后的结果设置。35、带进位的循环左移 rcl (rotate left
32、through carry)指令的汇编格式:rcl dst,cnt指令的基本功能:rcl 对由dst指定的寄存器或存储器操作数,连同进位标志cf左循环移动,m所指定的次数,每左移一次,把操作数的最高位移入cf,而cf中原有内容移入操作数的最低位。指定支持的寻址方式:目的操作数dst可以是除立即数外的任何寻址方式。移动次数(或位数)cnt=1时,1可以直接写在指令中,cnt1时,cnt必须放入cl寄存器中。指令对标志位的影响:cf=移入的数值。 of=1 当cnt=1时,移动后最高位的值未发生变化。 of=0 当cnt=1时,移动后最高位的值发生变化。 sf、zf、pf标志位不受影响。36、带进
33、位的循环右移 rcr (rotate right through carry)指令的汇编格式:rcr dst,cnt指令的基本功能:rcr 对由dst指定的寄存器或存储器操作数,连同进位标志cf右循环移动,m所指定的次数,每右移一次,把操作数的最高低位移入cf,而cf中原有内容移入操作数的最高位。指令支持的寻址方式:目的操作数dst可以是除立即数外的任何寻址方式。移动次数(或位数)cnt=1时,1可以直接写入指令中,cnt1时,cnt必须放入cl寄存器中。指令对标志位的影响:cf=移入的数值。 of=1 当cnt=1时,操作数最高位的值未发生变化。 of=0 当cnt=1时,操作数最高位的值发
34、生变化。 sf、zf、pf标志位不受影响。串处理指令一、设置方向标志指令37、df置零 cld (clear direction flag) df置一 std (set direction flag)指令的汇编格式:cld std指令的基本功能:cld df=0 std df=1二、串处理指令38、串传送 movsb / movsw (move string byte/word)指令的汇编格式:movsb movsw指令的基本功能:(es:di)<-(ds:si) (si)<-(si)+/-1(字节)或+/-2(字) (di)<-(di)+/-1(字节)或+/-2(字)指令对
35、条件码的影响:不影响条件码。指令的特殊要求:源串必须在数据段中,目的串必须在附加段中,串处理指令隐含的寻址方式是si和di寄存器的间接寻址方式。源串允许使用段跨越前缀来指定段。39、存串 stosb / stosw (stroe from string byte/word)指令的汇编格式:stosb stosw指令的基本功能:(es:di)<-(al)或(ax) (di)<-(di)+/-1(字节)或+/-2(字)指令对条件码的影响:不影响条件码。指令的特殊要求:源串必须在数据段中,目的串必须在附加段中,串处理指令隐含的寻址方式是si和di寄存器的间接寻址方式。源串允许使用段跨越前
36、缀来指定段。40、取串lodsb / lodsw (load from string byte/word)指令的汇编格式:lodsb lodsw指令的基本功能:(al)或(ax)<-(ds:si) (si)<-(si)+/-1(字节)或+/-2(字)指令对条件码的影响:不影响条件码。指令的特殊要求:源串必须在数据段中,目的串必须在附加段中,串处理指令隐含的寻址方式是si和di寄存器的间接寻址方式。源串允许使用段跨越前缀来指定段。41、串比较 cmpsb / cmpsw (compare string byte/word)指令的汇编格式:cmpsb cmpsw指令的基本功能:(ds:
37、si)-(es:di) 根据比较结果设置条件码 (si)<-(si)+/-1(字节)或+/-2(字) (di)<-(di)+/-1(字节)或+/-2(字)指令对条件码的影响:sf=1 减法结果为负数(符号位为1) sf=0 减法结果为正数(符号位为0) zf=1 减法结果为零 zf=0 减法结果不为零 cf=1 二进制减法运算中最高有效位向高位有借位(被减数小于减数,不够减的情况) cf=0 二进制减法运算中最高有效为向高位无借位(被减数=减数,够减的情况) of=1 两数符号相反(正数-负数,或负数-正数),而结果符号与减数相同。 of=0 同符号数相减时,或不同符号数相减,其结
38、果符号与减数不同。42、串扫描 scasb / scasw (scan string byte / word)指令的汇编格式:scasb scasw指令的基本功能:(al)<-(es:di)或(ax)<-(es:di) 根据扫描比较的结果设置条件码。 (di)<-(di)+/-1(字节)或+/-2(字)指令对条件码的影响:sf=1 结果为负数(符号位为1) sf=0 结果为正数(符号位为0) zf=1 结果为零 zf=0 结果不为零 cf=1 二进制减法运算中最高有效位向高位有借位(被减数小于减数,不够减的情况) cf=0 二进制减法运算中最高有效为向高位无借位(被减数=减数
39、,够减的情况) of=1 两数符号相反(正数-负数,或负数-正数),而结果符号与减数相同。 of=0 同符号数相减时,或不同符号数相减,其结果符号与减数不同。三、串重复前缀43、重复执行串 rep 指令的汇编格式:rep (cx)=重复次数指令的基本功能: (cx)=0时,串指令执行完毕,否则执行 (cx)(cx)1 执行串指令(movs或stos) 重复执行44、相等/为零时重复执行串指令 repe/repz指令的汇编格式:repe / repz (cx)=比较/扫描的次数指令的基本功能: (cx)=0或zf=0时,结束执行串指令,否则继续 (cx)(cx)1 执行串指令(cmps或scas
40、) 重复执行45、不等/不为零时重复执行串指令 repne / pepnz指令的汇编格式:repne / pepnz (cx)=比较/扫描的次数指令的基本功能: (cx)=0或zf=1,结束执行串指令,否则继续 (cx)(cx)1 执行串指令(cmps或scas) 重复执行控制转移指令一、无条件转移指令46、短转移 jmp short label (short jump)指令的汇编格式:jmp short label指令的基本功能:(ip)<-当前(ip)+8位位移量 8位位移量是汇编程序在汇编源程序时,根据目标地址和当前ip之间的距离自动生成的。指令对条件码的影响:对标志位无影响。47
41、、近转移 jmp near ptr label (near jump)指令的汇编格式:直接转移 jmp label (direct jump) 寄存器间接转移 jmp reg (register indirect jump) 存储器间接转移 jmp word ptr opr (memory indirect jump)指令的基本功能:jmp label (ip) <- offset label = (ip)当前16位位移量 jmp reg (ip) <- (reg) jmp word ptr opr (ip) <- (pa+1,pa)指令支持的寻址方式:指令中的转向地址可以是
42、直接寻址方式、寄存器寻址方式、寄存器间接寻址方式和存储器寻址方式。指令对条件码的影响:对标志位无影响。48、远转移 jmp far ptr label (for jump)指令的汇编格式:jmp far ptr label指令的基本功能:(ip)<-label的段内偏移地址 (cs)<-label所在段的段地址指令支持的寻址方式:远转移的目的地址可以使用除立即寻址方式外的任何寻址方式来表示。指令对条件码的影响:对标志位无影响。二、条件转移指令指令的汇编格式及功能根据条件码的值转移:49、jz(je) opr zf=150、jnz(jne) opr zf=051、js opr sf=
43、152、jns opr sf=053、jo opr of=154、jno opr of=055、jp opr pf=156、jnp opr pf=057、jc opr cf=158、jnc opr cf=0比较两个无符号数,根据比较的结果转移59、jb(jnae,jc) opr cf=1 被减数小于减数则转移60、jnb(jae,jnc) opr cf=0 被减数大于或等于减数则转移61、jbe(jna) opr cf或zf=1 被减数小于或等于减数则转移62、jnbe(ja) opr cf或zf=0 被减数大于减数则转移比较两个带符号数,根据比较结果转移63、jl/jnge opr sf异或
44、of=1 被减数小于减数则转移 64、jnl/jge sf异或of=0 被减数不小于减数则转移65、jle/jne (sf异或of)与zf=1 被减数不大于减数则转移66、jnle/jg (sf异或of)与zf=0 被减数大于减数则转移根据cx寄存器的值转移67、jcxz (cx)=0 cx内容为零 则转移指令的特殊要求:所有条件转移指令都是短转移指令,转移的目标地址必须在当前ip地址的-128至+127字节范围之内,因此条件转移指令是2字节指令。三、循环指令68、循环 loop (loop)指令的汇编格式:loop label指令的基本功能: (cx)(cx)1 若(cx)0,则(ip)(ip)当前位移量,否则循环结束。指令的特殊要求:循环指令都是短转移格式的指令,也就是
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024正规个人房屋租赁合同格式(简单版)
- 街区店铺租赁协议
- 合作事宜协议书模板
- 个人买房协议书
- 2024股份合作协议书合同范本
- 2024竞争性招标合同范文
- 城市更新项目拆除合同
- 工程工具租赁合同
- 2024补偿贸易借款合同标准范本范文
- 专业婚车租赁协议
- 个人开车与单位免责协议书
- 《护理文书书写》课件
- 广东省广州市海珠区2024-2025学年三年级上学期月考英语试卷
- 2023年北京市重点校初三(上)期末历史试题汇编:第一次工业革命
- 《最后一片叶子》课件
- 2024年小轿车买卖合同标准版本(三篇)
- 八年级生物中考备考计划
- 2024-2030年全球及中国湿巾和卫生纸行业市场现状供需分析及市场深度研究发展前景及规划可行性分析研究报告
- 公务员2019年国考《申论》真题及答案(省级)
- 2024年会计专业考试初级会计实务试卷与参考答案
- 职业技术学院材料工程技术专业调研报告
评论
0/150
提交评论