- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
汇编语言程序设计Assembly Language Programming IBM PC机的指令系统 8086/8088指令系统分成下列六大类: 数据传送指令 算术运算指令 逻辑运算和移位指令 串操作指令 CPU控制指令与标志位处理指令 控制转移指令 AND VS TEST AND具有破坏性,TEST没有 AL = 0FFH AND AL,0 TEST AL,0 同SUB和CMP 例子(一) 例子(二) 将AL的低4位清0,最高位取反,次高位变为1,其它3位不变 AND AL,0F0H OR AL,40H XOR AL,80H 移位指令 分类: 逻辑SHL/SHR 算术SAL/SAR 循环ROL/ROR 带进位循环RCL/RCR 共同特点 都是按位进行 当移动的位数为一位时,用立即数1;当移动二位或二位以上时,要预先将移动的位数存放在CL中。 SHL AL, 2 ?MOV CL,2 ; SHL AL,CL; 逻辑SHL/SHR 算术SAL/SAR 算术左移 SAL (同逻辑左移SHL) 格式:SAR Dst,Src 功能:将Dst的内容右移1~n位,最高位不变 算术右移一位等价于将一个带符号数除以2 (整除) 注意:当操作数为负数且最低位有1移出时, SAR与IDIV结果不同,如-1右移后为-1,不为0 循环移位指令 循环左移 ROL Dst,Src 循环右移 ROR Dst,Src 带进位循环RCL/RCR 带进位循环左移 RCL Dst,Src 带进位循环右移 RCR Dst,Src 移位指令 例子(一) RCL和RCR常用在多字节数的移位。 在DX和AX中存放着一个32位数据,试将其左移1位。 SHL AX,1 RCL DX,1 右移如何处理? 例子(三) 把(BL)中的8位数高低4位互换 MOV DL,BL MOV CL,4 SHR BL, CL SHL DL, CL OR BL, DL MOV CL,4 ROL/ROR BL, CL 习题 比较移位指令 CL = 8 SHL AL,CL SHR AL,CL SAL AL,CL SAR AL,CL ROL AL,CL ROR AL,CL RCL AL,CL RCR AL,CL IBM PC机的指令系统 8086/8088指令系统分成下列六大类: 数据传送指令 算术运算指令 逻辑运算和移位指令 串操作指令 CPU控制指令与标志位处理指令 控制转移指令 IBM PC机的指令系统 8086/8088指令系统分成下列六大类: 数据传送指令 算术运算指令 逻辑运算和移位指令 串操作指令 CPU控制指令与标志位处理指令 控制转移指令 4. 串操作指令 MOVS LODS STOS CMPS SCAS B——BYTE,W——WORD REP/REPZ/REPNZ 串 操 作 寄存器: DS:SI——存放源串的地址 ES:DI——存放目标串的地址 CX——存放串的长度 AL/AX——存放关键字 方向标志: (DF)=0 ——执行串指令时,对SI、DI进行加1/2操作。 (DF)=1 ——执行串指令时,对SI、DI进行减1/2操作。 设置方向标志: CLD ;0 —— DF STD ;1 —— DF 重复操作前缀 REP 串指令; 若(CX)≠0,重复执行串指令; CX-=1; REPZ/REPE 串指令; 若(CX)≠0且(ZF)=1,重复执行串指令; CX-=1; REPNZ/REPNE串指令; 若(CX)≠0且(ZF)=0,重复执行串指令; CX -=1 MOVS 格式: MOVSB ;字节传送 MOVSW ;字传送 MOVS Dst, Src ;字或字节传送,Dst,Src必须有一者指明传送的大小。如:movs word ptr[di], [si] (一般不使用) 功能:DS:SI处的一个字节/字送入ES:DI #if MOVSB #define SIZE 1 BYTE PTR ES:[DI] = BYTE PTR DS:[SI] #else if MOVSW #define SIZE 2 WORD PTR ES:[DI] = WORD PTR DS:[SI] #endif if (DF == 0) { SI += SIZE; DI += SIZE; }else{ SI -= SIZE; DI -= SIZE; } MOVS 使用“MOVS”指令要做的准备工作: 源串的首地址(偏址)?SI; 目标串的首地址(偏址)?DI; 设置方向标志 重复MOVS指令: REP MOVSB REP MOVSW 上述指令的执行过程: 若(CX)=0,则退出该指令的执
文档评论(0)