- 1、本文档共66页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
CH3 8086的指令系统
例4:将AL中的压缩BCD转换为非压缩BCD,存入到AX中。 程序片段为: MOV AH,0 MOV CL,4 SHL AX,CL SHR AL,CL 例:设AL寄存器中存有报警标志。若D7=1,表示温度报警,程序要转到温度报警处理程序T_ ALARM;D6=1,则转压力报警程序P_ALARM。用TEST指令来实现这种功能。 解:TEST AL,80H ;查AL的D7=1? JNZ T_ALARM ;是1(非零),则转温度报警程序 TEST AL,40H ;查AL的D7=0,D6=1? JNZ P_ALARM ;是1,转压力报警 (注:JNZ为条件转移指令,表示结果非0 (ZF=0)则转移) 注意:(AND/OR/XOR和TEST指令) src可是8位或16位DATA、REG、MEN; dst只能是REG、MEM,两操作数不能同时为MEM; dst和src都不能是段寄存器。 指令执行后,均将CF和OF清零,ZF、SF和 PF反映操作结果,AF未定义。 例1:保留AL中低4位,高4位清0。 AND AL,0FH 例2:保留AL中低4位,高4位置1。 OR AL,0F0H 例3:保留AL中低4位,高4位取反。 XOR AL,0F0H 例4:使AL中D1D0位取反。 XOR AL,03H 综合例题 例5:测试AL的内容是否为负数。 TEST AL,80H ;检查AL中D7=1? JNZ MINUS ;是1(负数),转MINUS … … ;否则为正数 MINUS: … … 例6:把AX寄存器清零。 ① MOV AX,0 ② SUB AX,AX ③ AND AX,0 ④ XOR AX,AX 四条:SAL、SHL、SAR、SHR 格式:指令码 dst,COUNT 功能:将目的操作数(字或字节)的各位进行算术或逻辑移位,移位的次数由COUNT决定。 注意: 指令中目的操作数不能为DATA,应为REG或MEN (指明类型)。 COUNT值可是1或CL(大于1时,必须放在CL中) 影响CF、SF、ZF、PF(AL)、OF(移位1次) 2、算术逻辑移位指令 移位指令的操作示意图如下: 注意:算术右移最高位保持不变 CF MSB LSB 0 SAL/SHL 算术/逻辑左移 CF SHR逻辑右移 0 MSB LSB SAR算术右移 CF MSB LSB 目的寄存器或存储单元 例:设AL 若执行指令SHL AL,1 ;AL,CF=1 若执行指令SAL AL,1 ;AL,CF=1 若执行指令SHR AL,1 ;AL,CF=1 若执行指令SAR AL,1 ;AL,CF=1 SHR AL,3 改为:MOV CL,3 SHR AL,CL 注意:当移位次数大于1时,必须放在CL中 循环移位指令把操作数从一端移到另一端,移出的位不丢失。 循环移位指令共四条: ⑴ ROL循环左移指令 ⑵ ROR循环右移指令 ⑶ RCL带进位位的循环左移 ⑷ RCR带进位位的循环右移 格式:指令码 dst,COUNT 3、循环移位指令 循环移位指令操作示意图: CF MSB LSB RCL带进位位的 循环左移 CF MSB LSB ROL 循环左移 CF MSB LSB ROR 循环右移 CF MSB LSB RCR 带进位位的 循环右移 目的寄存器或存储单元 注意: 循环移位后:结果 → dst; dst可以是8/16位的REG、MEM(指明类型); COUNT值可是1或CL(大于1时,必须放在CL中) 影响CF、SF、ZF、PF(AL)、OF(移位1次) 例1: 设CF=1,AL=1011 0100B 若执行指令 ROL AL,1;则: AL=0110 1001B,CF=1,OF=1 若执行指令 ROR AL,1;则: AL=0101 1010B,CF=0,OF=1 若执行指令 RCR AL,1;则: AL=1101 1010B,CF=0,OF=0 若执行指令 MOV CL,3
文档评论(0)