实验二 算术逻辑运算及移位操作
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验二算术逻辑运算及移位操作
一.实验任务
1.实验程序段及结果表格如表:
分析:
程序段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