网站大量收购独家精品文档,联系QQ:2885784924
  1. 1、本文档共45页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
组成与汇编4-3资料

【例4-46】 由3个字构成的一个无符号数从高位到低位依次存放在M+4,M+2,M字单元中,若要将该数右移一位,则可用以下程序段实现: SHR M+4,1 RCR M+2,1 RCR M,1 如下图所示,SHR指令将M+4字单元的最低位移至CF中。第2条指令RCR将CF与M+2字单元构成一个17位的数进行一次循环右移,将M+4单元右移出的位通过CF移至M+2单元的最高位,而M+2中的最低位又移至CF。在第3条指令执行后,就完成将3个字的数右移一位。 * 4.串操作类指令 MOVS(MOVe String) 串传送。 CMPS(CoMPare String) 串比较。 SCAS(SCAn String) 串扫描。 LODS(LOaD from String) 取串。 STOS(STOre into String) 存串。 INS(INput from port to String) 串输入。 OUTS(OUTput String to port) 串输出。 与上述基本指令配合使用的前缀有: REP(REPeat) 重复。 REPE/REPZ(REPeat while Equal/Zero) 相等/为零则重复。 REPNE/REPNZ(REPeat while Not Equal/Not Zero)不相等/不为零则重复。 * (1)取串指令(Load String) 指令格式:LODS 源串 LODSB ; 取字节串 LODSW ; 取字串 LODSD ; 取双字串(80386及其后继机型可用) 指令功能: 字节操作 AL ?(DS:(SI/ESI)),SI/ESI ?(SI/ESI) 1 字操作 AX ?(DS:(SI/ESI)),SI/ESI ?(SI/ESI) 2 双字操作 EAX ?(DS:(SI/ESI)),SI/ESI ?(SI/ESI) 4 该指令把由源变址寄存器指向的数据段中某单元(字节/字/双字)的内容送到AL、AX或EAX中,并根据方向标志DF和数据类型(字节、字或双字)修改源变址寄存器的内容。若DF ? 0表示串操作按地址递增的方向处理,则修改SI/ESI内容用“+”; 若DF ? 1表示串操作按地址递减的方向处理,则修改SI/ESI内容用“-”。该指令也不影响标志位。 LODS指令如采用16位寻址,则源变址寄存器只能使用SI;如采用32位寻址,源变址寄存器只能使用ESI。 * 2.算术运算类指令 算术运算类指令包括加、减、乘、除4种指令。这类指令可以对字节、字或双字数据进行运算,参加运算的数可以是无符号数或带符号数。由于80x86提供十进制数运算校正指令,因此参加运算的数也可以是BCD码表示的十进制数。这类指令中既有双操作数指令,也有单操作数指令。如前所述,双操作数指令的两个操作数不能同时为存储器操作数,且只有源操作数可为立即数。单操作数指令不允许使用立即数寻址方式。 (1)加法运算指令 ADD(ADD) 加法 ADC(ADD with Carry) 带进位加法 INC(INCrement) 加1 XADD(eXchange and ADD) 交换并相加 * ① ADD加法指令 指令格式:ADD DEST,SRC 指令功能:DEST ?(SRC)+( DEST),即源操作数与目的操作数相加,其和送入目的地址中。并根据相加结果设置FLAGS的OF、SF、ZF、AF、PF和CF标志位。该指令执行后,源操作数保持不变。 【例4-29】 加法指令的常用格式有: ADD BX,SI ADD DA_WORD,0F8CH ADD DL,TAB[BX] ADD EAX,EDX * 下面以指令“ADD DL,0A4H”为例,给出该指令的相加及标志位设置过程。设DL的内容为0E5H: 结果不为零,则ZF ? 0; 结果无溢出,则OF ? 0; 结果中有奇数个1,则PF ? 0。 需要指出,溢出位OF表示带符号数的溢出,它是根据数的符号及其变化来设置的。而CF位可以表示无符号数的溢出。 * ② ADC带进位加法指令

文档评论(0)

wyjy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档