第3章数据处理
〔习题3.1〕简答题
〔解答〕
①没有。使用二进制8位表达无符号整数,257没有对应的编码。
②字符“'F'”的ASCII码就是数值46H,所以没有区别。
③汇编程序在汇编过程中对数值表达式计算,得到一个确定的数值,故称数值表达式为常量。
④不能。数值500大于一个字节所能表达的数据量,所以不能为字节变量赋值。
⑤源、目标寄存器位数不同,不能用该指令进行数据交换。
⑥前者在指令执行时获得偏移地址,是正确的;但后者的OFFSET只能在汇编阶段获得偏移地址,但此时寄存器内容是不可知的,所以无法获得偏移地址。
⑦INC,DEC,NEG和NOT指令的操作数既是源操作数也是目的操作数。
⑧大小写字母转换利用它们的ASCII码相差20H。
⑨加减法不区别无符号数和有符号数,但根据运算结果分别设置标志寄存器的CF和OF 标志,可利用CF和OF进行区别。
⑩逻辑与运算规则类似二进制的乘法,所以称其为逻辑乘。
〔习题3.2〕判断题
〔解答〕
①对②对③对④错⑤错
⑥对⑦错⑧错⑨对⑩对
〔习题3.3〕填空题
〔解答〕
①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
〔习题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
my4b byte 00010100b
my5w word 20 dup(?)
my6c = 100
my7c equ <Personal Computer>
〔习题3.11〕
定义常量NUM,其值为5;数据段中定义字数组变量DA TALIST,它的头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的内容:; 数据段
org 100h
varwword 1234h,5678h
varb byte 3,4
vard dword 12345678h
buff byte 10 dup(?)
mess 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代码值(不是字符本身),然后使用字符串显示子程序DISPMSG实现显示。〔解答〕
include io32.inc
.data
table b yte ' |0 1 2 3 4 5 6 7 8 9 A B C D E F',13,10
byte '---+-------------------------------',13,10
byte '20 |',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 '30 |',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 '40 |',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 '50 |',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 '60 |',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 '70 |',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
; 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

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。