微机原理习题答案3

2026/1/12 15:39:51

寻址、基址加变址。此外,程序控制指令还有直接、相对、寄存器间接、存储器间接等寻址方式。

3.36 试写出寻址存储器操作时计算有效地址EA的通式。

解:EA=基址值(BX/BP)+变址值(SI/DI)+位移量Disp(0/8/16位) 3.37 指出8086/8088下列指令源操作数的寻址方式。

(1)MOV AX,1200H (2) MOV BX,[1200H]

(3)MOV BX,[SI] (4) MOV BX,[SI+1200H] (5)MOV [BX+SI],AL (6) ADD AX,[BX+DI+20H] (7)MUL BL (8) JMP BX

(9)IN AL,DX (10)INC WORD PTR[BP+50H] 解:(1)立即数寻址

(2)存储器直接寻址

(3)变址寄存器间接寻址 (4)寄存器变址间接寻址 (5)基址加变址寄存器间接寻址 (6)基址加变址间接寻址 (7)寄存器寻址 (9)端口间接寻址

(8)寄存器寻址

(10)寄存器基址加变址间接寻址

3.38 指出8086/8088下列指令中存储器操作数物理地址的计数表达式。 (1)MOV AL,[DI] (2)MOV AX,[BX+SI] (3)MOV 8[BX+DI],AL (4)ADD AL,ES:[BX]

(5)SUB AX,[2400H] (6)ADC AX,[BX+DI+1200H] (7)MOV CX,[BP+SI] (8)INC BYTP PTR[DI] 解:(1)PA=DS×16+DI (2)PA=DS×16+(BX+SI) (3)PA=DS×16+(BX+DI+8) (4)PA=ES×16+BX

(5)PA=DS×16+2400H (6)PA=DS×16+(BX+DI+1200H) (7)PA=SS×16+(BP+SI) (8)PA=DS×16+DI 3.39 指出8086/8088下列指令的错误何在?

(1)MOV [SI],IP (2)MOV CS,AX (3)MOV BL,SI+2 (4)MOV 60H,AL (5)PUSH 2400H (6) INC [BX]

(7)MUL-60H (8)ADD [2400H],2AH (9)MOV [BX],[DI] (10)MOV SI,AL 解:(1)IP不可与内部寄存器之间实现直接数据传送

(2)代码段寄存器CS不可与内部寄存器之间实现直接数据传送

(3)应是[SI+2]指示的内存单元的字节内容

(4)立即数60H不可做目的操作数

(5)PUSH的源操作数只能为寄存器操作数或内存操作数

(6)间接寻址存储器数据加1指令要用TYPE PTR类型操作符来标识数据类型 (7)MUL 指令的源操作数只能为寄存器操作数或内存操作数 (8)要用TYPE PTR类型操作符来标识数据类型 (9)两者不能同为存储器操作数

(10)AL为8位,SI为16位,数据类型不匹配

3.40 MOV CS,AX指令会带来什么错误?

解:这条指令不存在。如果有的话,将可以直接仅改变代码段的段基址而IP值不变,程序运行顺序发生变化,变到那里去了?很难控制。

3.41 阅读下列程序段,指出每条指令执行以后有关寄存器的内容是什么? MOV AX,0ABCH ; AX= 0ABCH DEC AX ; AX= 0ABBH

5

AND AX,00FFH ; AX= 00BBH MOV CL,4 ; CL= 4

SAL AL,1 ;AL= 76H,CF=1 MOV CL,AL ;CL= 76H ADD CL,78H ;CL= 0EEH,CF=0 PUSH AX ;AX=0076H POP BX ;BX=0076H

解:执行完后,AX=0076H,CF=0,CL=0EEH

3.42 指出RET和IRET两条指令的区别,并说明各用在什么场合? 解:RET用于从过程返回,而IRET用于从中断中返回。

3.43 说明MOV BX,DATA和MOV BX,0FFSET DATA指令之间的区别。 解: MOV BX,DATA ;DATA是字变量名,指令功能是把DATA变量的内容→BX

MOV BX,0FFSET DATA ;把DATA变量的段内偏移地址→BX 3.44 给定DS=1100H,BX=0200H,LIST=0250H和SI=0500H。试确定下面各条指令寻址存储器的物理地址。 (1)MOV LIST[SI],EDX (2)MOV CL,LIST[BX+SI] (3)MOV CH,[BX+SI] (4)MOV DL,[BX+100] 解:(1)PA=11000+0500+0250=11750H (2)PA=11000+0200+0500+0250=11950H (3)PA=11000+0200+0500=11700H (4)PA=11000+0200+0100=11300H 3.45 假定PC机存储器低地址区有关单元的内容如下所示。 (20H)=3CH,(21H)=00H,(22H)=86H,(23H)=0EH

且CS=2000H,IP=0010H,SS=1000H,SP=0100H FLAGS=0240H,这时若执行INT 8指令,试问:

(1)程序转向从何处执行(用物理地址回答)?

(2)栈顶6个存储单元的地址(用逻辑地址回答)及内容分别是什么?

解:(1)PA=0E86×10H + 003CH = 0E89CH

(2)LA=1000:00FAH~1000:00FFH

3.46 设SP=2000H,AX=3000H,BX=5000H,执行下列片段程序后,问SP=?AX=?BX=? PUSH AX

PUSH BX

POP AX

解:SP=1FFEH,AX=5000H,BX=5000H 3.47 某程序段为

2000H:304CH ABC:MOV AX,1234H 。。。 2000H:307EH JNE ABC

试问代码段中跳转指令的操作数为何值? 解:操作数为4CH-(7E+2)=0CCH

3.48 若AX=5555H,BX=FF00H,试问在下列程序段执行后,AX=?BX=?CF=? AND AX,BX ;AX=5500H XOR AX,AX ;AX=0000H NOT BX

解:AX=0000H,BX=00FFH,CF=0

3.49 若CS=E000H,说明代码段可寻址物理存储地址空间的范围。

解:代码段可寻址物理存储地址空间的范围是:E0000H—EFFFFH,共64KB的空间。 3.50 若DS=3000H,BX=2000H,SI=0100H,ES=4000H,计算出下述各条指令中存储器操作

6

数的物理地址。

(1)MOV [BX],AH (2) ADD AL,[BX+SI+1000H] (3)MOV AL,[BX+SI] (4)SUB AL,ES:[BX] 解:(1)PA=30000+2000=32000H (2)PA=30000+2000+0100+1000=33100H (3)PA=30000+2000+0100=32100H (4)PA=40000+2000=42000H

3.51 试比较SUB AL,09H与CMP AL,09H这两条指令的异同,若AL=08H,分别执行下述两条指令后,SF=?CF=?OF=?ZF=?

解:在SUB指令中,将AL- 09H的值赋给AL,而CMP指令只影响标志,不保存结果。 SUB AL,09H ;SF=1,CF=1,OF=0,ZF=0,AL=FF CMP AL,09 ;SF=1,CF=1,OF=0,ZF=0,AL=08 3.52 选用最少的指令,实现下述要求的功能。

(1)AH的高4位清零 (2)AL的高4位取反

(3)AL的高4位移到低4位,高4位清零 (4)AH的低4位移到高4位,低4位清零 解:(1)AND AH,0FH

(2)XOR AL,0F0H (3)MOV CL,4

SHR AL,CL

(4)MOV CL,4

SHL AH,CL

3.53 设BX=6D16H,AX=1100H,写出下列两条指令执行后BX寄存器中的内容。

MOV CL,06H ;CL=06H ROL AX,CL ;AX=4004H SHR BX,CL ;BX=01B4H 解:BX=01B4H

3.54 设初值AX=0119H,执行下列程序段后AX=?

MOV CH,AH ;CH=01H

ADD AL,AH ; AL=1AH,AF=0,CF=0 DAA ;AL=20,AF=1,CF=0 XCHG AL,CH ;AL=01H,CH=20H ADC AL,34H ;AL=01H+34H=35H DAA ;AL=35H MOV AH,AL ;AH=35H MOV AL,CH ;AL=20H HLT 解:AX=3520H

3.55 设初值AX=6264H,,CX=0004H,在执行下列程序段后AX=?

AND AX,AX ;AX=6264H,ZF=0

JZ DONE

SHL CX,1 ;CX=0008H

ROR AX,CL ;AX=6462H

DONE:OR AX,1234H ;AX=7676H 解:AX=7676H

3.56 写出可使AX清零的几条指令。 解: AND AX,0;

7

MOV AX,0;

XOR AX,AX。

3.57 什么叫堆栈?说明堆栈中数据进出的顺序以及压入堆栈和弹出堆栈的操作过程。 解:堆栈中数据的进出顺序为“先进后出”

PUSH S操作过程,先SP←SP-2,再[SS:SP]←S POP D操作过程,先D←[SS:SP],再SP←SP-2

3.58 8086~80286微处理器中PUSH和POP指令在堆栈和寄存器或存储单元之间总是传送多

少位数字? 解:传送16位数字

3.59 哪个段寄存器不能从堆栈中弹出? 解:SS段寄存器不能从堆栈中弹出。

3.60 如果堆栈底部定位在存储器位置02200H,试问SS和SP中将装入什么值? 解:SS=0220H,SP=0000H

3.61 带有OFFSET的MOV指令与LEA指令比较,哪条指令的效率更高?

解:MOV指令与LEA指令的功能不同,应用的地方也不同,应该说没有可比性。在二者都可用

时,MOV指令的效率更高。带有OFFSET的MOV指令不能完全替代LEA指令。

3.62 若AX=1001H,DX=20FFH,当执行ADD AX,DX指令后,请列出和数及标志寄存器

中每个位的内容(CF、AF、SF、ZF和OF)。

解:AX=3100H, CF=0;AF=1;SF=0;ZF=0;OF=0。

3.63 假如想从200中减去AL中的内容,用SUB 200,AL是否正确?如果不正确,请写出

正确的指令表示。 解:不可用立即数做目的操作数 MOV BL,200 SUB BL,AL

3.64 若DL=0F3H,BH=72H,当从DL减去BH后,列出差数及标志寄存器各位的内容。 解:差数为81H,AF=0,SF=1,ZF=0,OF=0

3.65 当两个16位数相乘时,乘积放在哪两个寄存器中?并指出积的高有效位和低有效位分别

防在哪个寄存器中?CF和OF两个标志位是什么?

解:乘积放在DX,AX中,高位放在DX中,低位放在AX中,当DX≠0时,CF=OF=1,否则 CF=OF=0 。 3.66

3.67 写出一个程序段,求DL寄存器中一个8位数的3次方,起初将5装入DL,要确保结果

是16位的数字。 解1:16位二进制数最大可以是40的三次方,而402 = 1600 > 256,故:

MOV AL,X ;X可以是0至40的任意数 MOV DL,AL MUL DL MOV DH,AH

MUL DL

;求X2

;保留X2的高8位 ;X2的低8位再乘X

MOV BX,AX ;保存X2的低8位与X的乘积

MOV AL,DH MUL DL ;X2的高8位再乘X,乘积不会超出8位 MOV CL,8 SHL AX,CL ;把X2的高8位与X的乘积左移8位(乘以256) ADD AX,BX ;再加上X2的低8位与X的乘积= X3 结果在AX中

8


微机原理习题答案3.doc 将本文的Word文档下载到电脑
搜索更多关于: 微机原理习题答案3 的文档
相关推荐
相关阅读
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 10

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219