微机原理与接口技术(钱晓捷版)课后习题答案

2026/4/28 16:01:43

mov al,8 ; AL=8

xlat ; AL=12H(8的格雷码) 不使用XLAT指令: mov ebx,offset table ; EBX=格雷码表首地址 mov eax,0

mov al,8 ; AL=8 mov al,[eax+ebx] ; AL=12H(8的格雷码)

〔习题3.19〕

请分别用一条汇编语言指令完成如下功能:

(1)把EBX寄存器和EDX寄存器的内容相加,结果存入EDX寄存器。

(2)用寄存器EBX和ESI的基址变址寻址方式把存储器的一个字节与AL寄存器的内容相加,并把结果送到AL中。

(3)用EBX和位移量0B2H的寄存器相对寻址方式把存储器中的一个双字和ECX寄存器的内容相加,并把结果送回存储器中。

(4)将32位变量VARD与数3412H相加,并把结果送回该存储单元中。 (5)把数0A0H与EAX寄存器的内容相加,并把结果送回EAX中。 〔解答〕 ① add edx,ebx ② add al,[ebx+esi]

③ add [bx+0b2h],cx ④ add varw,3412h

⑤ add eax,0a0h 〔习题3.20〕

分别执行如下程序片断,说明每条指令的执行结果: ( 〔解答〕 (1)

; EAX=80H

; EAX=83H,CF=0,SF=0 ; EAX=103H,CF=0,OF=0

; EAX=106H,CF=0,ZF=0 (2)

; EAX=100

; EAX=300,CF=0

(3) ; EAX=100

; EAX=44,CF=1(包含256的进位含义:256+44=300) (4) mov al,7fh ; AL=7FH

sub al,8 ; AL=77H,CF=0,SF=0 sub al,80h ; AL=F7H,CF=1,OF=1

sbb al,3 ; AL=F3H,CF=0,ZF=0 〔习题3.21〕

给出下列各条指令执行后AL值,以及CF、ZF、SF、OF和PF的状态:

mov al,89h add al,al add al,9dh cmp al,0bch sub al,al dec al inc al

CF ZF SF OF PF 1

0 0 0 1 0 1

1 0 0 0 1 1

1 1 1 1

〔解答〕 mov al,89h ; AL=89H

add al,al

; AL=12H

add al,9dh ; AL=0AFH 0 cmp al,0bch ; AL=0AFH 1 sub al,al ; AL=00H dec al ; AL=0FFH 0

0

0 1 0 0 1 0 1 0

0

inc al ; AL=00H 〔习题3.22〕

有两个64位无符号整数存放在变量buffer1和buffer2中,定义数据、编写代码完成EDX.EAX←buffer1-buffer2功能。 〔解答〕

; 数据段

buffer1 qword 67883000h

buffer2 qword 67762000h ; 代码段 mov eax,dword ptr buffer1 mov edx,dword ptr buffer1+4

sub eax,dword ptr buffer2 sbb edx,dword ptr buffer2+4

〔习题3.23〕

分别执行如下程序片断,说明每条指令的执行结果: 〔解答〕 (1) ; ESI=9CH

; ESI=80H ; ESI=FFH

; ESI=01H (2)

; EAX=1010B(可以有前导0,下同) ; EAX=0010B,CF=1 ; EAX=0100B,CF=0

; EAX=0000B,CF=0 (3)

; EAX=1011B(可以有前导0,下同) ; EAX=101100B,CF=0 ; EAX=10110B,CF=0

; EAX=10111B,CF=0

(4) ; EAX=0,CF=0,OF=0 ; ZF=1,SF=0,PF=1 〔习题3.24〕

3.24 给出下列各条指令执行后AX的结果,以及状态标志CF、OF、SF、ZF、PF的状态。 mov ax,1470h

and ax,ax or ax,ax xor ax,ax not ax

test ax,0f0f0h

; AX=1470H CF OF SF ZF PF

0 0 0 0

0 0

0 0

〔解答〕 mov ax,1470h

and ax,ax or ax,ax

; AX=1470H 0 ; AX=1470H 0

xor ax,ax ; AX=0000H 0 0 0 not ax ; AX=FFFFH 0 0 0 1 test ax,0f0f0h ; AX=0F0F0H 0 1 1

1

0 1

0 1

〔习题3.25〕

逻辑运算指令怎么实现复位、置位和求反功能?

〔解答〕

AND指令同“0”与实现复位,OR指令同“1”或实现置位,XOR同“1”异或实现求反。 〔习题3.26〕

说明如下程序段的功能:

mov ecx,16 mov bx,ax

next: shr ax,1 rcr edx,1 shr bx,1

rcr edx,1 loop next

mov eax,edx 〔解答〕

将AX的每一位依次重复一次,所得的32位结果保存于EAX中。 〔习题3.27〕

编程将一个64位数据逻辑左移3位,假设这个数据已经保存在EDX.EAX寄存器对中。 〔解答〕 ; 代码段 mov ecx,3

again: shl eax,1 rcl edx,1 loop again 〔习题3.28〕

编程将一个压缩BCD码变量(例如92H)转换为对应的ASCII码,然后调用DISPC子程序(在输入输出子程序库中)显示。 〔解答〕 ; 数据段 bcd byte 92h

; 代码段 mov al,bcd shr al,4 add al,30h call dispc mov al,bcd and al,0fh add al,30h call dispc

〔习题3.29〕

以MOVS指令为例,说明串操作指令的寻址特点,并用MOV和ADD等指令实现MOVSD的功能(假设DF=0)。 〔解答〕

MOVS指令的功能是:

ES:[EDI]←DS:[ESI];ESI←ESI±1/2/4,EDI←EDI±1/2/4

由此可看出串操作指令的寻址特点:

源操作数用寄存器ESI间接寻址,默认在DS指向的数据段,但可以改变;目的操作数用寄存器EDI间接寻址,只能在ES指向的附加数据段;每执行一次串操作,源指针ESI和目的指针EDI将自动修改:±1(字节),±2(字)或±4(双字)。指针的增量和减量控制由DF标志确定,DF=0,进行增量;DF=1,进行减量。 push eax mov eax,[esi]

mov es:[edi],eax add esi,4

add edi,4 〔习题3.30〕

说明如下程序执行后的显示结果: ; 数据段

msg byte 'WELLDONE',0

; 代码段

mov ecx,(lengthof msg)-1

mov ebx,offset msg again: mov al,[ebx]

add al,20h mov [ebx],al add ebx,1

loop again

mov eax,offset msg

call dispmsg

如果将其中语句“mov ebx,offset msg”改为“xor ebx,ebx”,则利用EBX间接寻址的两个语句如何修改成EBX寄存器相对寻址,就可以实现同样功能?


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

下载本文档需要支付 10

支付方式:

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

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