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

2019-04-14 18:02

① my1b为字符串变量:Personal Computer ② my2b为用十进制数表示的字节变量:20 ③ my3b为用十六进制数表示的字节变量:20 ④ my4b为用二进制数表示的字节变量:20 ⑤ my5w为20个未赋值的字变量 ⑥ my6c为100的常量

⑦ my7c表示字符串:Personal Computer 〔解答〕

my1b my2b my3b my4b my5w my6c my7c

byte 'Personal Computer' byte 20 byte 14h

byte 00010100b word 20 dup(?) = 100

equ

〔习题3.11〕

定义常量NUM,其值为5;数据段中定义字数组变量DATALIST,它的头5个字单元中依次存放-10,2,5和4,最后1个单元初值不定。 〔解答〕

num equ 5

datalist byte -10,2,5,4,?

〔习题3.12〕

从低地址开始以字节为单位,用十六进制形式给出下列语句依次分配的数值:

byte 'ABC',10,10h,'EF',3 dup(-1,?,3 dup(4)) word 10h,-5,3 dup(?)

〔解答〕

41 42 43 0A 10 45 46 FF 00 04 04 04 FF 00 04 04 04 FF 00 04 04 04 10 00 FB FF 00 00 00 00 00 00 〔习题3.13〕

设在某个程序中有如下片段,请写出每条传送指令执行后寄存器EAX的内容:

varw varb vard buff mess

; 数据段 org 100h

word 1234h,5678h byte 3,4

dword 12345678h byte 10 dup(?) byte 'hello' ; 代码段

mov eax,offset mess

mov eax,type buff+type mess+type vard

mov eax,sizeof varw+sizeof buff+sizeof mess mov eax,lengthof varw+lengthof vard

〔解答〕

① EAX=0114H ② EAX=0006H

- -11

③ EAX=0013H ④ EAX=0003H 〔习题3.14〕

按照如下输出格式,在屏幕上显示ASCII表: | 0 1 2 3 4 5 6 7 8 9 A B C D E F ---+-------------------------------- 20 | ! “ # ... 30 | 0 1 2 3 ... 40 | @ A B C ... 50 | P Q R S ... 60 | ‘ a b c ... 70 | p q r s ...

表格最上一行的数字是对应列ASCII代码值的低4位(用十六进制形式),而表格左边的数字对应行ASCII代码值的高4位(用十六进制形式)。编程在数据段直接构造这样的表格、填写相应ASCII代码值(不是字符本身),然后使用字符串显示子程序DISPMSG实现显示。 〔解答〕

include io32.inc .data table byte ' |0 1 2 3 4 5 6 7 8 9 A B C D E F',13,10 byte '---+-------------------------------',13,10 byte

|',20h,20h,21h,20h,22h,20h,23h,20h,24h,20h,25h,20h,26h,20h,27h,20h,28h,20h,29h,20h byte 2ah,20h,2bh,20h,2ch,20h,2dh,20h,2eh,20h,2fh,20h,13,10 byte

|',30h,20h,31h,20h,32h,20h,33h,20h,34h,20h,35h,20h,36h,20h,37h,20h,38h,20h,39h,20h byte 3ah,20h,3bh,20h,3ch,20h,3dh,20h,3eh,20h,3fh,20h,13,10 byte

|',40h,20h,41h,20h,42h,20h,43h,20h,44h,20h,45h,20h,46h,20h,47h,20h,48h,20h,49h,20h byte 4ah,20h,4bh,20h,4ch,20h,4dh,20h,4eh,20h,4fh,20h,13,10 byte

|',50h,20h,51h,20h,52h,20h,53h,20h,54h,20h,55h,20h,56h,20h,57h,20h,58h,20h,59h,20h byte 5ah,20h,5bh,20h,5ch,20h,5dh,20h,5eh,20h,5fh,20h,13,10 byte

|',60h,20h,61h,20h,62h,20h,63h,20h,64h,20h,65h,20h,66h,20h,67h,20h,68h,20h,69h,20h byte 6ah,20h,6bh,20h,6ch,20h,6dh,20h,6eh,20h,6fh,20h,13,10 byte

|',70h,20h,71h,20h,72h,20h,73h,20h,74h,20h,75h,20h,76h,20h,77h,20h,78h,20h,79h,20h byte 7ah,20h,7bh,20h,7ch,20h,7dh,20h,7eh,20h,7fh,20h,13,10 byte 0 .code start: mov eax,offset table call dispmsg exit 0 end start

'20

'30

'40

'50

'60

'70

〔习题3.15〕

数据段有如下定义,IA-32处理器将以小端方式保存在主存:

- -12

var dword 12345678h

现以字节为单位按地址从低到高的顺序,写出这个变量内容。并说明如下指令的执行结果:

mov eax,var mov bx,var mov cx,var+2 mov dl,var mov dh,var+3

; EAX=__________ ; BX=__________ ; CX=__________ ; DL=__________ ; DH=__________

可以编程使用十六进制字节显示子程序DSIPHB顺序显示各个字节进行验证,还可以使用十六进制双字显示子程序DSIPHD显示该数据进行对比。 〔解答〕

小端方式采用“低对低、高对高”,即低字节数据存放在低地址存储单元、高字节数据存放在高地址存储单元。以字节为单位按地址从低到高的顺序,var变量的内容:78H、56H、34H、12H。

; EAX=12345678H ; BX=5678H ; CX=1234H ; DL=78H ; DH=12H

〔习题3.16〕

使用若干MOV指令实现交互指令“XCHG EBX,[EDI]”功能。 〔解答〕

push eax mov eax,ebx mov ebx,[edi] mov [edi],eax pop eax

; 可以没有

; 可以没有

〔习题3.17〕

假设当前ESP=0012FFB0H,说明下面每条指令后,ESP等于多少?

push eax push dx

push dword ptr 0f79h pop eax

pop word ptr [bx] pop ebx

〔解答〕

ESP=0012FFACH ESP=0012FFAAH ESP=0012FFA6H ESP=0012FFAAH ESP=0012FFACH ESP=0012FFB0H 〔习题3.18〕

已知数字0~9对应的格雷码依次为:18H、34H、05H、06H、09H、0AH、0CH、11H、12H、14H;请为如下程序的每条指令加上注释,说明每条指令的功能和执行结果。

- -13

table ; 数据段

byte 18h,34h,05h,06h,09h,0ah,0ch,11h,12h,14h ; 代码段

mov ebx,offset table mov al,8 xlat

为了验证你的判断,不妨使用本书的I/O子程序库提供的子程序DISPHB显示换码后AL的值。如果不使用XLAT指令,应如何修改? 〔解答〕

table

; 数据段

byte 18h,34h,05h,06h,09h,0ah,0ch,11h,12h,14h ; 定义格雷码表 ; 代码段

mov ebx,offset table ; EBX=格雷码表首地址 mov al,8 ; AL=8 xlat ; AL=12H(8的格雷码) mov ebx,offset table mov eax,0 mov al,8 mov al,[eax+ebx]

; EBX=格雷码表首地址 ; AL=8

; AL=12H(8的格雷码)

不使用XLAT指令:

〔习题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

- -14

; EAX=300,CF=0

(3)

; EAX=100

; EAX=44,CF=1(包含256的进位含义:256+44=300)

(4)

mov al,7fh sub al,8 sub al,80h sbb al,3

; AL=7FH

; AL=77H,CF=0,SF=0 ; AL=F7H,CF=1,OF=1 ; 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 mov al,89h add al,al add al,9dh cmp al,0bch sub al,al dec al inc al

; AL=89H ; AL=12H ; AL=0AFH ; AL=0AFH ; AL=00H ; AL=0FFH ; AL=00H

CF ZF 1 0 0 0 1 0 0 1 0 0 0 1

SF 0 1 1 0 1 0

OF 1 0 0 0 0 0

PF 1 1 1 1 1 1

〔解答〕

〔习题3.22〕

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

buffer1 buffer2

; 数据段

qword 67883000h 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

- -15


微机原理与接口技术(钱晓捷版)课后习题答案(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:通达2号专项方案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

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