实验二算术逻辑运算及移位操作(精品)
实验二 算术逻辑运算及移位操作
一(实验任务
1.实验程序段及结果表格如表:
标志位 CF ZF SF OF PF AF 程序段1: 0 0 0 0 0 0 MOV AX, 1018H 0 0 0 0 0 0 MOV SI, 230AH 0 0 0 0 0 0 ADD AX, SI 0 0 0 0 1 1 ADD AL, 30H 0 0 0 0 0 0 MOV DX, 3FFH 0 0 0 0 0 0 ADD AX,BX 0 0 0 0 0 0 MOV [20H], 1000H 0 0 0 0 0 0 ADD [20H], AX 0 0 0 0 0 0 PUSH AX 0 0 0 0 0 0 POP BX 0 0 0 0 0 0 程序段2: 0 0 0 0 0 0 MOV AX, 0A0AH 0 0 0 0 0 0 ADD AX, 0FFFFH 1 0 0 0 1 1 MOV CX, 0FF00H 1 0 0 0 1 1 ADC AX, CX 1 0 0 0 1 0 SUB AX, AX 0 1 0 0 1 0 INC AX 0 0 0 0 0 0 OR CX, 0FFH 0 0 1 0 1 0 AND CX, 0F0FH 0 0 0 0 1 0 MOV [10H], CX 0 0 0 0 1 0 程序段3: 0 0 0 0 0 0 MOV BL, 25H 0 0 0 0 0 0 MOV BYTE PTR[10H], 4 0 0 0 0 0 0 MOV AL, [10H] 0 0 0 0 0 0 MUL BL 0 0 0 0 0 0
00 0 0 0 0 0 程序段4:
MOV WORD PTR[10H],80H 0 0 0 0 0 0
MOV BL, 4 0 0 0 0 0 0
MOV AX, [10H] 0 0 0 0 0 0
DIV BL 0 0 0 0 0 0
0 0 0 0 0 0 程序段5:
MOV AX, 0 0 0 0 0 0 0
DEC AX 1 0 1 0 1 1
ADD AX, 3FFFH 0 0 0 0 0 1
ADD AX, AX 0 0 0 0 1 1
NOT AX 0 0 0 0 1 1
SUB AX, 3 0 0 0 1 0 1
OR AX, 0FBFDH
0 0 1 0 0 0 AND AX, 0AFCFH
0 0 1 0 0 0 SHL AX,1
1 0 0 1 1 0 RCL AX,1
0 0 0 1 1 0
分析:
程序段1:
MOV AX, 1018H ;AX,1018H
MOV SI, 230AH ; SI,230AH
ADD AX, SI ;AX=3322H,低8位为 00100010B,1的个数
;为偶数,PF=1,同时D3向D4有进位发生,AF=1 ADD AL, 30H ;AX=3352H,低8位1个个数为奇数,PF=0 MOV DX, 3FFH ;DX,3FFH
ADD AX,BX ;AX=3352H,
MOV [20H], 1000H ;[20H],1000H
ADD [20H], AX ;[20H]=4352H
PUSH AX ;
POP BX ;BX=3352H
程序段2:
MOV AX, 0A0AH ;AX,0A0AH
ADD AX, 0FFFFH ;AX=0A09H,最高位进位CF=1,低8位1的
;个数为偶数PF=1;D3向D4进位AF=1 MOV CX, 0FF00H ;CX,0FF00H
ADC AX, CX ;AX=090AH,最高位进位CF=1,低8位1的个
;数为偶数PF=1
SUB AX, AX ; AX=0,运算结果为零ZF=1 INC AX ;AX=1H
OR CX, 0FFH ;CX=0FFFFH,最高位为1,ZF=1,低8位1的
;个数为偶数PF=1
AND CX, 0F0FH ;CX=0F0FH,低8位1的个数为偶数PF=1 MOV [10H], CX ;[10H],0F0FH
程序段3:
MOV BL, 25H ;BL,25H
MOV BYTE PTR[10H], 4 ;[10H],04H
MOV AL, [10H] ;AL,04H
MUL BL ;AL=94H
程序段4:
MOV WORD PTR[10H],80H ;[10H],0080H
MOV BL, 4 ;BL,04H
MOV AX, [10H] ;AX,0080H
DIV BL ;AX=0020H
程序段5:
MOV AX, 0 ;AX,0000H
DEC AX ;AX=0FFFFH,最高位为1,SF=1,低8
;位1的个数为偶数PF=1,最高位向前、
;D3向D4有借位,CF=1,AF=1 ADD AX, 3FFFH ;AX=3FFEH,D3向D4有进位,AF=1 ADD AX, AX ;AX=7FFCH,低8位1的个数为偶数,PF=1
;D3向D4有进位,AF=1 NOT AX ;AX=8003H SUB AX, 3 ;AX=8000H,低8位1的个数为偶数,PF=1
;最高位为1,SF=1
OR AX, 0FBFDH ;AX=0FBFDH,最高位为1,SF=1 AND AX, 0AFCFH ;AX=0ABCDH,最高位为1,SF=1 SHL AX,1 ;AX=579AH,低8位1的个数为偶数,PF=1,
;算数结果溢出OF=1,最高位进位CF=1 RCL AX,1 ;AX=0AF35H,低8位1的个数为偶数,
;PF=1,算数结果溢出OF=1
2.用BX寄存器作为地址指针,从BX所指的内存单元(0010H)开始连续存入
三个无符号数(10H、04H、30H),接着计算内存单元中的这三个数之和,和放在
0013H单元中,再求出这三个数之积,积放0014单元中。写出完成此功能的程
序段并上机验证结果。
程序段:
LEA BX,0010H
MOV [BX],10H
MOV [BX+1],04H
MOV [BX+2],30H
MOV AX,0000H
ADD AL,[BX]
ADD AL,[BX+1]
ADD AL,[BX+2]
MOV DS:[0013H],AL
MOV AL,[BX]
MUL [BX+1]
MUL [BX+2]
MOV DS:[0014],AX
上机验证:
3.写出完成下述功能的程序段。上机验证你写出的程序段,程序运行的最后
结果(AX),?
(1) 传送15H到AL寄存器;
(2) 再将AL的内容乘以2;
(3) 接着传送15H到BL寄存器;
(4) 最后把AL的内容乘以BL的内容。 程序段:
MOV CL,02H
MOV AL,15H
MUL CL
MOV BL,15H
MUL BL
结果AX=0372H
4(写出完成下述功能的程序段。上机验证你写出的程序段,程序运行后的商,?
(1) 传送数据2058H到DS:1000H单元中,数据12H到DS:1002H单元中;
(2) 把DS:1000H单元中的数据传送到AX寄存器;
(3) 把AX寄存器的内容算术右移二位;
(4) 再把AX寄存器的内容除以DS:1002H字节单元中的数;
(5) 最后把商存入字节单元DS:1003H中。
程序段:
MOV DS:[1000H],2058H
MOV DS:[1002H],12H
MOV AX,DS:[1000H]
SAR AX,2
MOV BL,DS:[1002H]
DIV BL
MOV DS:[1003H],AX
最后商为73H
5.下面的程序段用来清除数据段中从偏移地址0010H开始的12个字存储单元的内容(即将零送到这些存储单元中去)。
(1) 将第4条比较指令语句填写完整(划线处)。
MOV SI,0010H
NEXT: MOV WORD PTR[SI],0
ADD SI,2
CMP SI, 001CH
JNE NEXT
HLT
(2) 假定要按高地址到低地址的顺序进行清除操作(高地址从0020H开始),
则上述程序段应如何修改,
MOV SI,0020H
NEXT: MOV BYTE PTR[SI],0
SUB SI,1
CMP SI,0014H
JNE NEXT
HLT
6(输入并运行表1.3中的程序段,把结果填入表右边的空格中,并分析结果,说明本程序段的功能是什么。
程序段 字单元(1A00H)= 字单元(1A02H)=
MOV [1A00H], 0AA55H AA55 0000
MOV [1A02H], 2AD5H AA55 2AD5
SHL WORD PTR[1A02H],1 AA55 55AA
CMP [1A00H], 8000H AA55 55AA
CMC AA55 55AA
RCL WORD PTR[1A02H],1 AA55 AB55
RCL WORD PTR[1A00H],1 54AA AB55
说明:
MOV [1A00H], 0AA55H ;[1A00H] , 0AA55H MOV [1A02H], 2AD5H ;[1A02H] , 2AD5H SHL WORD PTR[1A02H],1 ;[1A02H]=DATA*2 CMP [1A00H], 8000H ;[1A00H]—8000H,结果不送回[1A00H] CMC ;进位标志取反
RCL WORD PTR[1A02H],1 ;将[1A02H]带CF的循环左移一位 RCL WORD PTR[1A00H],1 ;将[1A00H]带CF的循环左移一位
二(简答
3.简要说明ADD,SUB,AND,OR对标志位的影响。
答:4条指令满足以下条件时会对个标志位产生影响:
CF:当进行加减运算时若最高位向前有进位或借位,则CF=1,否则CF=0。
PF:当运算结果的低八位中1的个数为奇数时PF=1,否则PF=0。 AF:在加减法操作中,D3向D4有进位或借位时AF=1,否则AF=0。 ZF:当运算结果为零时ZF=1。
SF:当运算结果最高位为1时SF=1,否则SF=0。
OF:当运算结果溢出时OF=1。
4.简要说明一般移位指令与循环移位指令之间的区别
答:一般移位指令将最左(右)端移入CF,而另一端则会补0。循环移位指令同样将最左(右)端移入CF,但另一端会用CF或最左(右)端填充。
本文档为【实验二算术逻辑运算及移位操作(精品)】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。