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

更新时间:2023-11-15 17:09:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

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

一、 实验目的

1.熟悉算术逻辑运算指令和移位指令的功能。

2.了解标志寄存器各标志位的意义和指令执行对它的影响。

二、 实验预习要求

1.复习8086指令系统中的算术逻辑类指令和移位指令。 2.按照题目要求在实验前编写好实验中的程序段。

三、 实验任务

1.

实验程序段及结果表格如表1.2: 表1.2

标志位 程序段1: MOV AX, 1018H MOV SI, 230AH ADD AX, SI ADD AL, 30H MOV DX, 3FFH ADD AX,BX MOV [20H], 1000H ADD [20H], AX PUSH AX POP BX 程序段2: MOV AX, 0A0AH ADD AX, 0FFFFH MOV CX, 0FF00H ADC AX, CX SUB AX, AX INC AX CF 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 ZF 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 SF 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 OF 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 PF 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 1 1 0 AF 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 OR CX, 0FFH AND CX, 0F0FH MOV [10H], CX 程序段3: MOV BL, 25H MOV BYTE PTR[10H], 4 MOV AL, [10H] MUL BL 程序段4: MOV WORD PTR[10H],80H MOV BL, 4 MOV AX, [10H] DIV BL 程序段5: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 MOV AX, 0 0 0 0 0 0 0 2题答案 MOV BX.10H DEC AX 0 0 1 0 1 1 MOV CX,BX ADD AX, 3FFFH 1 0 0 0 0 1 INC BX ADD AX, AX 0 0 0 0 1 1 MOV SI,BX INC BX NOT AX 0 0 0 0 1 1 MOV AX,[CX] SUB AX, 3 0 0 1 0 0 0 ADD AX,[BX] OR AX, 0FBFDH 0 0 1 0 0 0 ADD AX,[SI] AND AX, 0AFCFH MOV [13H],AX 0 0 1 0 0 0 MOV AX,[CX] SHL AX,1 1 0 0 1 1 0 MUL RCL AX,1 0 0 0 1 1 0 WORDPTR[BX] MUL WORDPTR[SI] 2.用BX寄存器作为地址指针,从BX所指的内存单元(0010H)开始连续存MOV [14H],AX 入三个无符号数(10H、04H、30H),接着计算内存单元中的这三个数之和,和放

F 10H 12H 10H 4H 30H 在0013H单元中,再求出这三个数之积,积放0014单元中。写出完成此功能的

程序段并上机验证结果。

3.写出完成下述功能的程序段。上机验证你写出的程序段,程序运行的最后结果(AX)=?

(1) 传送15H到AL寄存器;

4题答案 MOV WORDPTR[1000H],2058H (2) 再将AL的内容乘以2;

MOV (3) 接着传送15H到BL寄存器; BYTEPTR[1002H],12H (4) 最后把AL的内容乘以BL的内容。

MOV

AX,[1000H] 4.写出完成下述功能的程序段。上机验证你写出的程序段,程序运行后的MOV BX,[1002H] 商=?

SAR AX,1 (1) 传送数据2058H到DS:1000H单元中,数据12H到DS:1002H单元中; SAR AX,1 DIV BX (2) 把DS:1000H单元中的数据传送到AX寄存器;

MOV (3) 把AX寄存器的内容算术右移二位; [1003H],AX (4) 再把AX寄存器的内容除以DS:1002H字节单元中的数;

最后结果为 (5) 最后把商存入字节单元DS:1003H中。 73H 3题答案 MOV AL,15H MOV SI,2H MUL SI MOV BL,15H MUL BL AX=372H

5.下面的程序段用来清除数据段中从偏移地址0010H开始的12个字存储单元的内容(即将零送到这些存储单元中去)。

(1) 将第4条比较指令语句填写完整(划线处)。 MOV SI,0010H NEXT: MOV WORD PTR[SI],0 ADD SI,2

CMP SI,答案 22H (或者20H)

JNE NEXT

5.2题答案 MOV SI,20H NEXT MOV WORDPTR[SI],0H SUB SI,2H CMP SI,8H JNZ NEXT HLT HLT

(2) 假定要按高地址到低地址的顺序进行清除操作(高地址从0020H开始),

则上述程序段应如何修改?

上机验证以上两个程序段并检查存储单元的内容是否按要求进行了改

变。

6. 输入并运行表1.3中的程序段,把结果填入表右边的空格中,并分析结果,说明本程序段的功能是什么。

表1.3

程序段 字单元(1A00H)= 字单元(1A02H)= 6题答案 程序通过逻辑左移 进位取反 循环左移 最后使得两个数的为65535 也就是16位二进制数的最大值 MOV [1A00H], 0AA55H MOV [1A02H], 2AD5H SHL WORD PTR[1A02H],1 CMP [1A00H], 8000H CMC RCL WORD PTR[1A02H],1 RCL WORD PTR[1A00H],1 四、 实验报告要求

AA55H AA55H AA55H AA55H AA55H AA55H 54AAH 0H 2AD5H 55AAH 55AAH 55AAH AB55H AB55H 1.整理出完整的实验程序段和运行结果。 2.回答题目中的问题。

3.简要说明ADD、SUB、AND、OR指令对标志位的影响。 4.简要说明一般移位指令与循环移位指令之间的主要区别。

本文来源:https://www.bwwdw.com/article/meiv.html

Top