第2章数据表示和寻址
2.1简答题
(2)字符“F”和数值46H作为MOV指令的源操作数有区别吗?
没有,因为字符“F”的ASCII码就是数值46H
(3)为什么可以把指令“MOVEAX,(34+67H)*3”中的数值表达式看成是常量?
汇编程序在汇编过程中对数值表达式计算,得到一个确定的数值,故称数值表达式为常量
(4)汇编语言为什么规定十六进制数若以A〜F开头,需要在前面加个0?
以便与标识符区别,因为标识符要求以字母(或特殊符号)开头
(7)为什么将查操作数的方法称为数据寻“址”方式?
指令的操作数需要通过存储器地址或I/O地址,才能查到数据本身,故称数据寻址方式
(8)为什么变量VAR在指令“MOVEAX,VAR”中表达直接寻址?
因为这里的变量名VAR实际上表达了从变量所存放的主存单元,即[地址]
2.2判断题
(1)对一个正整数,它的原码、反码和补码都一样,也都与无符号数的编码一样。
对
(2)常用的BCD码为8421 BCD码,其中的8表示D3位的权重。
对
(3)排序一般按照ascii码值大小,从小到大升序排列是,小写字母排在大写字母之前。
错
(4)用“BYTE”和“DWORD”定义变量,如果初值相同,则占用的存储空间也一样多。
错。用BYTE只占一个存储单元,而DWORD要占4个存储单元
(5)TYPEDX的结果是一个常量,等于2。
对
(6)IA-32处理器采用小端方式存储多字节数据。
对
(7)某个双字变量存放于存储器地址0403H - 0406H中,对齐了地址边界。
错
(8)立即数寻址只会出现在源操作数中。
对
(9)存储器寻址方式的操作数当然在主存了。
对
(10)指令 “MOVEAX,VAR+2” 与"MOVEAX, VAR⑵”功能相同。
对,仅是不同的形式罢了
2.3填空题
(1)计算机中有一个“01100001”编码。如果把它认为是无符号数,它是十进制数
;如果认为它是BCD码,则表示真值 ;又如果它是某个ASCH
码,则代表字符 o
97, 61,小写字母a
(2)C语言用“\n”表示让光标回到下一行首位,在汇编语言中需要输出两个控制字符: 一个是回车,其ASCH码是,它将光标移动到当前所在行的首位;另一个是 换行,其Ascn码是,它将光标移到下一行。
0DH (13), 0AH (10)
(3)定义字节变量的伪指令助记符是,获取变量名所具有的偏移地址的操作符是
BYTE, OFFSET
(4)数据段有语句 “H8843 Dword99008843h”,代码段指令 “mov cx,wordptr h8843” 执行
后,CX—( )。
8843
(5)用DWORD定义一个变量XYZ,它的类型是(),用“type XZY”会得到数值为()。 如果将其以字变量使用,应该用()说明。
双字,4, word ptr
(6)数据段有语句"ABC BYTE 1,2,3”,代码段指令“mov cl,abc+2”执行后,cl =().
3
(7)除外设数据外的数据寻址方式有3类,分别称为(),()和()。
立即寻址,寄存器寻址,存储器寻址
(8)指令“MOV EAX, OFFSET MSG”的目的操作数和源操作数分别采用 和
寻址方式。
寄存器寻址,立即数寻址
(9)已知 ESI=04000H, EBX=20H,指令 “MOV EAX, [ESI+EBX*2+8]"中访问的有效
地址是 o
04000H+20HX2 + 8 = 04048H
(10)用EBX作为及地址指令,默认采用()段寄存器指向的数据段,如果采用BP、EBP 或SP、ESP作为基地址指针,默认使用()段寄存器指向堆栈。
DS, SS
习题2.10
按照如下要求定义变量或符号常量:
(1)my lb 为字符串变量:Personal Computer
mylb byte 'Personal Computer'
(2)my2b为用十进制数表示的字节变量:20
my2b byte 20
(3)my3b为用十六进制数表示的字节变量:20
my3b byte 14h
(4)下列数据中属于字符串常量的是my4b为用二进制数表示的字节变量:20
my4b byte 00010100b
按照如下要求定义变量或符号常量:
(5)my5w为20个未赋值的字变量
my5w word 20 dup(?)
(6)my6c为100的常量
my6c = 100
(7)my7c 表示字符串:Personal Computer
my7c equ <Personal Computer>
习题2.14
按照如下输出格式,在屏幕上显示ASCII表
编程在数据段直接构造这样的表格、填写相应ASCII代码值(不是字符本身),然后使 用字符串显示子程序DISPMSG实现显示
.data
Table byte 3 dup(20h); I0 1 23456789ABCDEF, 13,10
byte dup(,-'),'+',31 dup (*), 13,10
Byte'20l',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 l,,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 0 ca =2
cas =20h
byte ca,*0 l',cas,20h,cas+l,20h,cas+2,20h,
cas+3,20h,cas+4,20h,cas+5,20h,cas+6,20h,cas+7,20h
byte cas+8,20h,cas+9,20h,cas+0ah,20h,cas+0bh,20h,
cas+0ch,20h,cas+0dh,20h,cas+0eh,20h,cas+0fh,20h, 13,10
cas =cas+10h
ca =ca+l
byte ca,*0 l',cas,20h,cas+l,20h,cas+2,20h,
cas+3,20h,cas+4,20h,cas+5,20h,cas+6,20h,cas+7,20h
byte cas+8,20h,cas+9,20h,cas+0ah,20h,cas+0bh,20h,
cas+0ch,20h,cas+0dh,20h,cas+0eh,20h,cas+0fh,20h, 13,10
习题2.15
数据段有如下定义:
var dword 12345678h
现以字节为单位按地址从低到高的顺序,写出这个变量内容。
var 变量的内容:78H、56H、34H、12H 并说明如下指令的执行结果:
mov eax,var ;EAX= 12345678H
mov bx,word ptr var ;BX=5678H
mov ex,word ptr var+2 ;CX= 1234H
mov dl,byte ptr var ;DL=78H
mov dh,byte ptr var+3 ;DH = 12H
习题2.17
说明源操作数的寻址方式
(1)mov edx,1234h 立即数
(2)mov edx,vard直接
(3)mov edx,ebx 寄存器
(4)mov edx,[ebx] 寄存器间接
(5)movedx,[ebx+1234h]寄存器相对
(6)mov edx,vard[ebx] 寄存器相对
(7)movedx,[ebx+edi] 基址变址
(8)movedx,[ebx+edi+1234h]相对基址变址
(9)mov edx,vard[esi+edi]相对基址变址
(10)mov edx,[ebp*4]带比例寻址
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论