汇编移位单片机左移和右移指令代码怎么写:请写出每步的AL值?

逻辑运算指令逻辑与AND格式AND reg, imm/reg/mem ;reg←reg^imm/reg/memAND mem, imm/reg ; mem←-mem ^ imm/reg功能:对两个操作数执行按位的逻辑与运算,结果送到目的操作数说明:(1)按位的逻辑与运算;(2)操作数不能同时为存储器操作数;(3)注意对标志位的影响; (OF,CF==0)思考:(1)某一个操作数自己和自己相逻辑与,结果是?(还是其本身)(2) AND指令主要用在什么场合?可屏蔽某些位(将这些位置0) 注:和0与清零,和1与保留原来的值逻辑或OR格式OR reg,imm/reg/mem; reg←reg V imm/reg/memOR mem,imm/reg ; mem←memV imm/reg功能:对两个操作数执行按位逻辑或运算,结果送到目的操作数说明(1)按位逻辑或运算;(2)OR指令对操作数的限制和对标志位的影响;(OF,CF==0)思考:(1)某一个操作数自己和自己相逻辑或,结果是?其本身(2)OR指令主要用在什么场合? 功能: 使某些位置为1逻辑非NOT格式 NOT reg/mem ;~reg/mem功能:对一个操作数执行按位逻辑非运算说明(1)按位取反,原来是“0”的位变为“1”,原来是“1”的位变为“0”;(2) NOT指令是一个单操作数指令;(3) NOT指令不影响标志位;逻辑异或XOR格式XOR reg,imm/reg/mem ; reg← reg 异或 imm/reg/memXOR mem,imm/reg ; mem← mem 异或 imm/reg功能:对两个操作数执行按位逻辑异或运算,结果送到目的操作数说明:(1) 只有相“异或”的两位不相同,结果才是1;(2)XOR指令对操作数的限制和对标志位的影响同AND指令(OF,CF==0)思考:(1)某一个操作数自己和自己相异或,结果是?为0(2) XOR指令主要用在什么场合?使操作数的某些位取反或测试两数是否相等测试TEST格式:TEST reg, imm/reg/mem ; reg^ imm/reg/memTEST mem, imm/reg ; mem^ imm/regTEST目的,源 ;目的^源,不回送结果,但影响标志位(例如ZF)例子TEST AL, 80H; 测AL中第7位JNZ T_ ALARM; D7=1, 转温度报警TEST AL, 40H; 测D6位JNZ P_ ALARM; D6=1, 转压力报警移位指令(破坏性移位)算术左移SAL(无符号数)格式: SAL 目的,计数值SAL AH,1SAL AH,CL(当计数值大于1时,数要先传入CL)SAL BYTE PTR [BX] ,1逻辑左移SHL(有符号数)格式: SHL目的,计数值SHL AH, 1SHL AH, CL注1)CF总是被移出的高位,两者均属于破坏性移位2)左移1位,相当于乘23)移位次数为1时,若最高位被改变,0F=1,否则0F=0(按有符号位相当于溢出)逻辑右移SHR 格式: SHR目的,计数值右移1次,无符号数相当于除以2 (余数丢弃)MOV AL, 10000110B ; AL=134
SHR AL, 1; AL=67
SHR AL, 1; AL=33, CF=1
算数右移SAR格式: SAR目的,计数值;右移1次,有符号数相当于除以2例:MOV AL, 80H; AL=10000000B- -128
MOV CL, 03H
SAR AL, CL ; AL=11110000B-F0H=-16
循环移位指令ROL 循环左移ROR循环右移RCL带进位循环左移RCR带进位循环右移循环移位指令的应用1.用于某些状态位的测试2.高位部分和低位部分的交换3.特定应用程序跑马灯等

我要回帖

更多关于 单片机左移和右移指令代码怎么写 的文章

 

随机推荐