微机课后答案整理

更新时间:2023-10-30 03:37:01 阅读量: 综合文库 文档下载

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

第一章

1.2 把下列十进制数转换成二进制、八进制、十六进制数。 6.25D=110.01B=6.2Q=6.4H

1.3 把下列二进制数转换成十进制数。 1101.01B=13.25

1.4 把下列八进制数转换成十进制数。

776.07Q=7*8*8+7*8+6+7/64=510.109375 1.5 把下列十六进制数转换成十进制数。

A6.DCH=166+13/16+12/256=166.859375 1.8 求下列带符号十进制数的8位二进制补码。 127 补码:07FH

-1 补码:0FFH

1.9 求下列带符号十进制数的16位二进制补码。 655 补码:028FH -1 补码:0FFFFH

第二章

2.3 简述8086 CPU的寄存器组织。 AX累加器 BX基址寄存器 CX计数器 DX数据寄存器

SI源变址寄存器 DI目的变址寄存器 SP堆栈指针寄存器 BP基址指针寄存器

DS数据段寄存器 SS堆栈段寄存器 CS代码段寄存器 ES附加段寄存器

IP指令指针寄存器 FLAGS标志寄存器

2.4 试述8086 CPU标志寄存器各位的含义与作用。 CF进位位 AF辅助进位位 OF溢出 SF符号位 PF奇偶位 ZF零标志位 IF中断允许 TF单步 DF方向

2.7 在8086中,CPU实际利用哪几条地址线来访问I/O端口?最多能访问多少个端口?

利用最低16根地址线。最多访问65536个端口。

第三章

3.1 机器指令分为哪几部分?每部分的作用是什么? 操作码和操作数。

操作码:用来说明该指令所要完成的操作。 操作数:用来描述该指令的操作对象。

3.2 指出下列MOV指令的源操作数的寻址方式:

MOV AX,1234H MOV AX,BX MOV AX,[BX]

MOV AX,TABLE;TABLE ;TABLE是一个变量名 MOV AX,[1234H] MOV AX,[BX+1234H] MOV AX,[BP][SI]

MOV AX,[BX+SI-1234H] 【解】:MOV AX,1234H 立即寻址

MOV AX,BX 寄存器寻址 MOV AX,[BX] 寄存器间接寻址 MOV AX,TABLE ;TABLE是一个变量名 直接寻址方式 MOV AX,[1234H] 直接寻址方式 MOV AX,[BX+1234H] 寄存器相对寻址 MOV AX,[BP][SI] 基址变址寻址 MOV AX,[BX+SI-1234H] 相对地址变址寻址 3.3 设:(DS)=2000H,(BX)=0100H,(SS)=1000H,(BP)=0010H,TABLE的物理地址为2000AH,(SI)=0002H。求下列每条指令源操作数的存储单元地址:

MOV AX,[1234H] MOV AX,[BX]

MOV AX,TABLE[BX] MOV AX,[BP]

MOV AX,[BP][SI] 【解】: 存储单元地址:(DS)×10H + EA =2000H×10H+1234H=21234H

存储单元地址:(DS)×10H +(BX)=2000H×10H+0100H=20100H 存储单元地址:(DS)×10H+EA=2000H×10H+0100H+000AH=2010AH 存储单元地址:(SS)×10H+EA=1000H×10H+0010H=10010H

储单元地址:(SS)×10H+EA=1000H×10H+0010H+0002H =10012H

3.4 设ARRAY是字数组的首地址,写出将第5个字元素取出送AX寄存器的指令,要求使用以下几种寻址方式:

⑴ 直接寻址 ⑵ 寄存器间接寻址 ⑶ 寄存器相对寻址 ⑷ 基址变址寻址 【解】:(1)直接寻址(2)寄存器间接寻址(3)寄存器相对寻址(4)基址变址寻址 MOV AX, ARRAY+8 MOV BX, ARRAY+8 MOV BX, 8 LEA BX, ARRAY

MOV AX, [BX] MOV AX, ARRAY[BX] MOV SI, 8 MOV AX,[BX+SI]

3.7 下列每组指令有何区别?

(1) MOV AX,1234H 立即寻址 MOV AX,[1234H] 直接寻址

(2)MOV AX,TABLE 直接寻址 MOV AX,[TABLE] 直接寻址

(3)MOV AX,TABLE 将TABLE的内容送AX

LEA AX,TALBE 将TABLE的偏移量送AX

(4)MOV AX,BX 寄存器寻址

MOV AX,[BX] 寄存器间接寻址 3.8 MOV CS,AX指令正确吗? 错误。不能用CS作目的操作数。

3.9 写一指令序列将3456H装入DS寄存器。 MOV AX,3456H MOV DS,AX

不能将立即数直接送段寄存器,所以得间接。

3.10 若正在访问堆栈的03600H单元,则SS和SP的值各是多少? 03600H=SS*10H+SP

所以有多个答案。例如: SS=350H SP=0H SS=300H SP=600H

3.11 若(SS)=2000H,(SP)=000AH,

先执行将字数据1234H和5678H压入堆栈的操作, 再执行弹出一个字数据的操作,

试画出堆栈区及SP的内容变化过程示意图(标出存储单元物理地址) SS:2000H 20006H 78H SP:0006H 20007H 56H 20008H 34H 20009H 12H 20006H 20007H SS:2000H 20008H SP:0008H 20009H 2000AH 2FFFFH 56H 34H 12H 栈顶 … 栈底 78H SS:2000H 2000AH 栈顶 SP:000AH

2FFFFH … 栈底 2000AH 栈顶 … 2FFFFH 栈底 3.13 能用ADD指令将BX内容加到ES中去吗? 不能。算术运算中段寄存器不得作为目的操作数。 3.14 INC [BX]指令正确吗?

错误。需指明存储器操作数的类型是字节还是字。

3.15 若(AX)=0001H,(BX)=0FFFFH,执行ADD AX,BX之后, 标志位ZF、SF、CF、OF各是什么? ZF=1 SF=0 CF=1 OF=0

3.16 写一指令序列完成将BL中的数据除以CL中的数据,

再将其结果乘以2,并将最后为16位数的结果存入DX寄存器中。 MOV AL,BL CBW DIV CL

MOV CL,2 MUL CL

MOV DX,AX

3.17 写一指令序列,完成将AX寄存器的最低4位置1,

最高3位清0,第7、8、9位取反,其余位不变的操作。 OR AX,000FH AND AX,1FFFH XOR AX,0380H

第四章 4.1 假设下列指令中所有标识符均是类型属性为字变量, 请指出下列指令中哪些是非法的? 它们的错误是什么? (1)MOV BP,AL (2)MOV WORD_OP[BX+4*3][DI],SP (3)MOV WORD_OP1,WORD_OP2 (4)MOV AX,WORD_OP1[DX] (5)MOV SAVE WORD,DS (6)MOV SP,SS:DATA_WORD[BX][SI] (7)MOV [BX][SI],2 (8)MOV AX,WORD_OP1+WORD_OP2 (9)MOV AX,WORD_OP1_WORD_OP2+100 10)MOV WORD_OP1,WORD_OP1_WORD_OP2 错 对 错 错 对 对 错 错 对 错 类型不一致 两存直接传 只能用BX.BP SI.DI间接寻址 需明确类型 是字还是字节 必须一常数 俩标识符直连

4.2 假设VAR1和VAR2为字变量,LAB为标号,试指出下列指令的错误之处: ⑴ ADD VAR1,VAR2 ⑵ SUB AL,VAR1 ⑶ JMP LAB[SI] ⑷ JNZ VAR1 ⑸ JMP NEAR LAB 【解】:

⑴ ADD VAR1,VAR2 ADD两个操作数不能同时为存储单元, MOV AX, VAR1 ADD AX, VAR2 ⑵ SUB AL,VAR1 两个操作数不匹配 SUB AX, VAR1 ⑶ JMP LAB[SI] LAB与[SI]不能相加

JMP WORD PTR [SI] ⑷ JNZ VAR1

JNZ后面应是标号,不应是变量 JNZ LAB

⑸ JMP NEAR LAB 缺少PTR运算符

JMP NEAR PTR LAB

4.5 假设程序中的数据定义如下: PARTNO DW ?

PNAME DB 16 DUP(?) COUNT DD ?

PLENTH EQU $-PARTNO

问PLENTH的值为多少? 它表示什么意义?

PLENTH的值为22,表示从PARTNO开始到PLENTH之前所含字节数 4.6 有符号定义语句如下: BUFF DB 1,2,3,‘123’ EBUFF DB 0

L EQU EBUFF-BUFF 问L的值是多少? L值为6。

BUFF DB 1,2,3,‘123’ L EQU $-BUFF EBUFF DB 0

4.9给出等值语句如下: ALPHA EQU 100 BETA EQU 25 GAMMA EQU 2

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

Top