〔解答〕
① 对 ⑥ 对
② 对 ⑦ 错 ③ 对 ⑧ 错 ④ 错 ⑨ 对 ⑤ 错 ⑩ 对
〔习题3.3〕填空题
(1)定义字节变量的伪指令助记符是_____________,获取变量名所具有的偏移地址的操作符是_____________。
(2)计算机中有一个“01100001”编码。如果把它认为是无符号数,它是10进制数___________;如果认为它是BCD码,则表示真值_____________;又如果它是某个ASCII码,则代表字符__________。
(3)C语言用“\\n”表示让光标回到下一行首位,在汇编语言中需要输出两个控制字符:一个是回车,其ASCII码是_____________,它将光标移动到当前所在行的首位;另一个是换行,其ASCII码是_____________,它将光标移到下一行。
(4)数据段有语句“H8843 DWORD 99008843H”,代码段指令“MOV CX, WORD PTR H8843”执行后,CX=_____________。
(5)用DWORD定义的一个变量XYZ,它的类型是_____________,用“TYPE XYZ”会得到数值为_____________。如果将其以字量使用,应该用_____________说明。
(6)数据段有语句“ABC BYTE 1,2,3”,代码段指令“MOV CL, ABC+2”执行后,CL=_____________。 (7)例题3-9的TAB定义如果是“1234567890”,则显示结果是__________。 (8)指令“XOR EAX, EAX”和“SUB EAX, EAX”执行后,EAX=__________,CF=OF=__________。而指令“MOV EAX, 0”执行后,EAX=__________,CF和OF没有变化。
(9)例题3-15程序执行结束,变量QVAR内容是__________;BCD内容是__________。
(10)欲将EDX内的无符号数除以16,使用指令“SHR EDX, __________”,其中后一个操作数是一个立即数。
〔解答〕
① BYTE,OFFSET ② 97,61,小写字母a
③ 0DH(13),0AH(10) ④ 8843H
⑤ DWORD,4,WORD PTR XYZ ⑥ 3
⑦ 78894111 ⑧ 0,0,0
⑨ 0123456788765432H,83H ⑩ 4 〔习题3.4〕
下列十六进制数表示无符号整数,请转换为十进制形式的真值: ① FFH ② 0H ③ 5EH ④ EFH 〔解答〕
① 255 ② 0 ③ 94 ④ 239 〔习题3.5〕
将下列十进制数真值转换为压缩BCD码: ① 12 ② 24 ③ 68 ④ 99 〔解答〕
① 12H ② 24H ③ 68H ④ 99H
- -11
〔习题3.6〕
将下列压缩BCD码转换为十进制数:
① 10010001 ② 10001001 ③ 00110110 ④ 10010000 〔解答〕
① 91 ② 89 ③ 36 ④ 90 〔习题3.7〕
将下列十进制数用8位二进制补码表示: ① 0 ② 127 ③-127 ④ -57 〔解答〕
① 00000000 ② 01111111 ③ 10000001 ④ 11000111 〔习题3.8〕
进行十六进制数据的加减运算,并说明是否有进位或借位: ① 1234H+7802H ② F034H+5AB0H ③ C051H-1234H ④ 9876H-ABCDH
〔解答〕
① 1234H+7802H=8A36H,无进位 ② F034H+5AB0H=4AF4H,有进位 ③ C051H-1234H=BE1DH,无借位 ④ 9876H-ABCDH=ECA9H,有借位 〔习题3.9〕
数码0~9、大写字母A~Z、小写字母a~z对应的ASCII码分别是多少?ASCII码0DH和0AH分别对应什么字符?
〔解答〕
数码0~9对应的ASCII码依次是30H~39H。
大写字母A~Z对应的ASCII码依次是:41H~5AH。 小写字母a~z对应的ASCII码依次是:61~7AH。 ASCII码0DH和0AH分别对应的是回车和换行字符。 〔习题3.10〕
设置一个数据段,按照如下要求定义变量或符号常量: ① my1b为字符串变量:Personal Computer ② my2b为用十进制数表示的字节变量:20 ③ my3b为用十六进制数表示的字节变量:20 ④ my4b为用二进制数表示的字节变量:20 ⑤ my5w为20个未赋值的字变量 ⑥ my6c为100的常量
⑦ my7c表示字符串:Personal Computer 〔解答〕 my1b byte 'Personal Computer' my2b byte 20 my3b byte 14h
- -12
my4b my5w my6c my7c
〔习题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(?) byte 00010100b word 20 dup(?) = 100
equ
〔解答〕
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 ③ 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代码值
- -13
(不是字符本身),然后使用字符串显示子程序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
〔习题3.15〕数据段有如下定义,IA-32处理器将以小端方式保存在主存: var
dword 12345678h
现以字节为单位按地址从低到高的顺序,写出这个变量内容。并说明如下指令的执行结果: mov eax,var ; EAX=__________ mov bx,var ; BX=__________ mov cx,var+2 ; CX=__________ mov dl,var ; DL=__________ mov dh,var+3 ; DH=__________
可以编程使用十六进制字节显示子程序DSIPHB顺序显示各个字节进行验证,还可以使用十六进制双字显示子程序DSIPHD显示该数据进行对比。
〔解答〕
小端方式采用“低对低、高对高”,即低字节数据存放在低地址存储单元、高字节数据存放在高地址存储单元。以字节为单位按地址从低到高的顺序,var变量的内容:78H、56H、34H、12H。 ; EAX=12345678H ; BX=5678H ; CX=1234H ; DL=78H
'20
'30
'40
'50
'60
'70
- -14
; DH=12H
使用若干MOV指令实现交互指令“XCHG EBX,[EDI]”功能。 〔解答〕
push eax mov eax,ebx mov ebx,[edi] mov [edi],eax pop eax
; 可以没有
〔习题3.16〕
; 可以没有
〔习题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;请为如下程序的每条指令加上注释,说明每条指令的功能和执行结果。
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的格雷码)
不使用XLAT指令: mov ebx,offset table ; EBX=格雷码表首地址 mov eax,0 mov al,8 ; AL=8 mov al,[eax+ebx] ; AL=12H(8的格雷码)
- -15
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库微机原理与接口技术(第四版)课后习题答案(佳木斯大学)(3)在线全文阅读。
相关推荐: