实验二 算术逻辑运算及移位操作

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档