微机原理与接口技术试题库(含答案) (2) 下载本文

应改为: CMP AX, WORD PTR OP2 (11)MOV W_OP3[BX+4*3][DI], SP正确。

(12)ADD W_OP3, W_OP4错,源操作数和目的操作数均为内存单元,不允许。

应改为: MOV AX, W_OP4 ADD W_OP3, AX

(13)MOV AX, W_OP3[DX] 错,不能用DX寄存器间接寻址。 应改为: MOV BX, DX MOV AX, W_OP3[BX]

(14)MOV OP1, LOW DS错,源操作数中使用LOW来分离寄存器操作数,这是不允许的。

应改为: MOV WORD PTR OP1,DS

(15)MOV SP, OP2[BX][SI] 错,源操作数为字节类型,目的操作数为字类型,二者不一致。应改为:MOV SP, WORD PTR OP2[BX][SI]

(16)MOV AX, W_OP3+W_OP4错,两个标识符相加无意义。应改为: MOV AX, W_OP1

ADD AX, W_OP2

(17)MOV AX,W_OP3-W_OP4+100正确,源操作数为两个标识符(地址)相减再加一数,汇编时得到一个数。

(18)SUB AL, W_OP3+7错,两个操作数类型不一致。应改为: SUB AL, BYTE PTR W_OP3+7

(19)MOV AX,BX SHL 2错,SHL只能对常量进行运算,左边不能使用寄存器

(20)MOV BX,W_OP3 AND 8FD7H错,AND只能对常量进行运算,左边不能使用变量

4.设已定义数据段 DATA SEGMENT ……

VAR2 DW 10H,7889H ……

VAR5 DB 20H,0 ADRR DW VAR2,VAR5 DATA ENDS

为使ADRR字存储单元中存放内容为“0010H”,ADRR+2字存储单元中存放内容为“0020H”,上述省略号位置应分别填写一条什么语句?说明理由。

答:为使ADRR字存储单元中存放内容为“0010H”,ADRR+2字存储单元中存放内容为“0020H”,上述省略号位置应分别填写ORG 10H 和 ORG 20H, 或者分别填写语句

VAR1 DB 10H DUP(?) 和 VAR3 6 DUP(?)

5.下面的数据段中,有数据为‘4100H’的字存储单元有几个?它们的偏移量分别是多少?

DATA SEGMENT DA1 DB 0 ORG 41H

DA2 DB 0,‘A’,41H,0,41H ADR DW DA1,DA2 DATA ENDS

答:给出的数据段中,有数据‘4100H’的字存储单元有3个,它们的偏移量分别是41H、 44H、47H。

7.试用数据定义语句DB或DW改写下述两语句中的某一个,使它们在存储器中有完全相同的存储情况。

VAR1 DB ‘abcdefghij’

VAR2 DW 6162H,6364H,6566H,6768H,696AH

答:将第一个伪指令语句改写为VAR1 DW ‘ab’,‘cd’,‘ef’,‘gh’,‘ij’,第二个伪指令语句不变。或第一个伪指令语句不变,而将第二个伪指令语句改写为:

VAR2 DB 61H,62H,63H,64H,65H,66H,67H,68H,69H,6AH

9.按下面的要求写出程序的框架

(1)数据段的位置从0E000H开始,数据段中定义一个100字节的数组,其类型属性既是字又是字节;

(2)堆栈段从小段开始,段组名(类别名)为STACK;

(3)代码段中指定段寄存器,指定主程序从1000H开始,给有关段寄存器赋值;

(4)程序结束。 答:所求程序框架为: Data SEGMENT AT 0E000H Arr_w LABEL WORD Arr_b DB 100 DUP(?) Data ENDS

Sta_seg SEGMENT PARA ‘STACK’ DB 80 DUP(?)