精品文档
第3章 数据处理 〔习题3.1〕简答题
(1)使用二进制8位表达无符号整数,257有对应的编码吗?
(2)字符“'F'”和数值46H作为MOV指令的源操作数有区别吗?
(3)为什么可以把指令“MOV AX, (34+67H)*3”中的数值表达式看成是常量?
(4)数值500,能够作为字节变量的初值吗?
(6)都是获取偏移地址,为什么指令“LEA EBX, [ESI]”正确,而指令“MOV EBX, OFFSET[ESI]”就错误?
(7)INC,DEC,NEG和NOT都是单操作数指令,这个操作数应该是源操作数还是目的操作数?
(9)乘除法运算针对无符号数和有符号数,有两种不同的指令。只有一种指令的加减法如何区别无符号数和有符号数运算?
(10)逻辑与运算为什么也称为逻辑乘? 〔解答〕
① 没有。使用二进制8位表达无符号整数,257没有对应的编码。 ② 字符“'F'”的ASCII码就是数值46H,所以没有区别。
③ 汇编程序在汇编过程中对数值表达式计算,得到一个确定的数值,故称数值表达式为常量。
④ 不能。数值500大于一个字节所能表达的数据量,所以不能为字节变量赋值。
⑥ 前者在指令执行时获得偏移地址,是正确的;但后者的OFFSET只能在汇编阶段获得偏移地址,但此时寄存器内容是不可知的,所以无法获得偏移地址。
⑦ INC,DEC,NEG和NOT指令的操作数既是源操作数也是目的操作数。
⑨ 加减法不区别无符号数和有符号数,但根据运算结果分别设置标志寄存器的CF和OF标志,可利用CF和OF进行区别。
⑩ 逻辑与运算规则类似二进制的乘法,所以称其为逻辑乘。
〔习题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=_____________。 〔解答〕
① BYTE,OFFSET ② 97,61,小写字母a
③ 0DH(13),0AH(10) ④ 8843H
⑤ DWORD,4,WORD PTR XYZ ⑥ 3 〔习题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.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
〔习题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.19〕请分别用一条汇编语言指令完成如下功能:(去E)
(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〕分别执行如下程序片断,说明每条指令的执行结果:(去E) (1) mov eax,80h add eax,3 __________ add eax,80h
; EAX=__________
; EAX=__________,CF=__________,SF=; EAX=__________,CF=__________,OF=
收集于网络,如有侵权请联系管理员删除
精品文档
__________ adc eax,3 ; EAX=__________,CF=____________________
(2) mov eax,100 ; EAX=__________ add ax,200 ; EAX=__________,CF=__________
(3) mov eax,100 ; EAX=__________ add al,200 ; EAX=__________,CF=__________
(4) mov al,7fh ; AL=__________ sub al,8 ; AL=__________,CF=____________________ sub al,80h ; AL=__________,CF=____________________ sbb al,3 ; AL=__________,CF=____________________ 〔解答〕
(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〕(推敲)
,ZF=
,SF=,OF=,ZF=
给出下列各条指令执行后AL值,以及CF、ZF、SF、OF和PF的状态:
mov al,89h add al,al
收集于网络,如有侵权请联系管理员删除