32位汇编语言习题解答第1章习题:汇编语言基础1.1简答题(1、3、6、7、8)1.2判断题(1、6、7、8、9)1.3填空题(3、4、5、7、10)1.9、1.13、1.15、1.16习题解答31.1简答题-1(1)哪个处理器的指令系统成为Intel80x86系列处理器的基本指令集?•8086(3)什么是通用寄存器?•一般指处理器最常使用的整数寄存器,可用于保存整数数据、地址等(6)最高有效位MSB是指哪一位?•数据的最高位,例如对8、16、32位数据,MSB依次指D7、D15和D31位习题解答41.1简答题-2(7)汇编语言中的标识符与高级语言的变量和常量名的组成原则有本质的区别吗?•没有(8)汇编语言的标识符大小写不敏感意味着什么?•表示字母大小写不同、但表示同一个符号习题解答51.2判断题1)EAX也被称为累加器,因为它使用最频繁。•对,EAX中的A来自英文累加器(Accumulator)6)处理器的传送指令MOV属于汇编语言的执行性语句•对7)汇编语言的语句由明显的4部分组成,不需要分隔符区别。•错,使用了分隔符才有了明显的4部分8)MASM汇编语言的注释用分号开始,不能用中文分号•对,源程序中的分隔符以及各种标识符都是英文9)程序终止执行也就意味着汇编结束,所以两者含义相同。•错,两者完全是两个概念习题解答61.3填空题-1(3)IA-32处理器有8个32位通用寄存器,其中EAX,___,___和EDX,可以分成16位和8位操作;还有另外4个是___,___,___,和___。•EBX,ECX,ESI,EDI,EBP,ESP(4)寄存器EDX是___位的,其中低16位的名称是____,还可以分成两个8位的寄存器,其中D0~D7和D8~D15部分可以分别用名称____和____表示。•32,DX,DL,DH(5)IA-32处理器有___个段寄存器,它们都是_____位的。•6,16习题解答71.3填空题-2(7)逻辑地址由___和___两部分组成。代码段中下一条要执行的指令由CS和___寄存器指示,后者在实地址模型中起作用的仅有___寄存器部分。•段基地址,偏移地址,EIP,IP(10)MASM要求汇编语言源程序文件的扩展名是___,汇编产生扩展名为OBJ的文件被称为___文件,编写32位Windows应用程序应选择___存储模型。•ASM,目标模块,FLAT习题解答8习题1.9•IA-32处理器有哪三类基本段,各是什么用途?•解答:•代码段:存放程序的指令代码•数据段:存放当前运行程序所用的数据•堆栈段:主存中堆栈所在的区域习题解答9习题1.13•汇编语言语句有哪两种,每种语句由哪4个部分组成•解答:•汇编语句有两种执行性语句(处理器指令)说明性语句(伪指令)•每个语句有4部分组成标号指令助记符操作数或参数注释习题解答10习题1.15•MASM汇编语言中,下面哪些是程序员可以使用的自定义标识符。FFH,DS,Again,next,@data,h_ascii,6364b,flat•解答:•FFH,Again,next,h_ascii•其他符号错误的原因:DS是数据段寄存器名6364b是数字开头@data是汇编语言使用预定义符号,表示数据段地址flat是表示平展存储模型的关键字习题解答11习题1.16•汇编语言程序的开发有哪4个步骤,分别利用什么程序完成、产生什么输出文件。•解答:•汇编语言程序的开发有4个步骤:编辑:用文本编辑器形成一个以ASM为扩展名的源程序文件。汇编:用汇编程序将ASM文件转换为OBJ模块文件。连接:用连接程序将一个或多个目标文件链接成一个EXE或COM可执行文件。调试:用调试程序排除错误,生成正确的可执行文件。第2章习题:数据表示和寻址2.1简答题(2、3、4、7、8)2.2判断题(2、4、8、9、10)2.3填空题(1、2、3、8、9)2.10、2.14、2.15、2.17习题解答132.1简答题-1(2)字符“'F'”和数值46H作为MOV指令的源操作数有区别吗?•没有,因为字符“'F'”的ASCII码就是数值46H(3)为什么可以把指令“MOVEAX,(34+67H)*3”中的数值表达式看成是常量?•汇编程序在汇编过程中对数值表达式计算,得到一个确定的数值,故称数值表达式为常量(4)汇编语言为什么规定十六进制数若以A~F开头,需要在前面加个0?•以便与标识符区别,因为标识符要求以字母(或特殊符号)开头习题解答142.1简答题-2(7)为什么将查找操作数的方法称为数据寻“址”方式?•指令的操作数需要通过存储器地址或I/O地址,才能查找到数据本身,故称数据寻址方式(8)为什么变量VAR在指令“MOVEAX,VAR”中表达直接寻址?•因为这里的变量名VAR实际上表达了从变量所存放的主存单元,即[地址]习题解答152.2判断题-1(2)常用的BCD码为8421BCD码,其中的8表示D3位的权重。•对(4)用“BYTE”和“DWORD”定义变量,如果初值相同,则占用的存储空间也一样多。•错。用BYTE只占一个存储单元,而DWORD要占4个存储单元(8)立即数寻址只会出现在源操作数中。•对习题解答162.2判断题-2(9)存储器寻址方式的操作数当然在主存了。•对(10)指令“MOVEAX,VAR+2”与“MOVEAX,VAR[2]”功能相同。•对,仅是不同的形式罢了习题解答172.3填空题-1(1)计算机中有一个“01100001”编码。如果把它认为是无符号数,它是十进制数___________;如果认为它是BCD码,则表示真值_____________;又如果它是某个ASCII码,则代表字符__________。•97,61,小写字母a(2)C语言用“\n”表示让光标回到下一行首位,在汇编语言中需要输出两个控制字符:一个是回车,其ASCII码是_____________,它将光标移动到当前所在行的首位;另一个是换行,其ASCII码是_____________,它将光标移到下一行。•0DH(13),0AH(10)习题解答182.3填空题-2(3)定义字节变量的伪指令助记符是______,获取变量名所具有的偏移地址的操作符是_______。•BYTE,OFFSET(8)指令“MOVEAX,OFFSETMSG”的目的操作数和源操作数分别采用______和_______寻址方式。•寄存器寻址,立即数寻址(9)已知ESI=04000H,EBX=20H,指令“MOVEAX,[ESI+EBX*2+8]”中访问的有效地址是__________。•04000H+20H×2+8=04048H习题解答19习题2.10-1•按照如下要求定义变量或符号常量:(1)my1b为字符串变量:PersonalComputer•my1bbyte'PersonalComputer'(2)my2b为用十进制数表示的字节变量:20•my2bbyte20(3)my3b为用十六进制数表示的字节变量:20•my3bbyte14h(4)my4b为用二进制数表示的字节变量:20•my4bbyte00010100b习题解答20习题2.10-2•按照如下要求定义变量或符号常量:(5)my5w为20个未赋值的字变量•my5wword20dup(?)(6)my6c为100的常量•my6c=100(7)my7c表示字符串:PersonalComputer•my7cequPersonalComputer习题解答21习题2.14•按照如下输出格式,在屏幕上显示ASCII表•编程在数据段直接构造这样的表格、填写相应ASCII代码值(不是字符本身),然后使用字符串显示子程序DISPMSG实现显示习题解答22习题2.14解答1.datatablebyte'|0123456789ABCDEF',13,10byte'---+-------------------------------',13,10byte'20|',20h,20h,21h,20h,22h,20h,23h,20h,24h,20h,25h,20h,26h,20h,27h,20h,28h,20h,29h,20hbyte2ah,20h,2bh,20h,2ch,20h,2dh,20h,2eh,20h,2fh,20h,13,10byte'30|',30h,20h,31h,20h,32h,20h,33h,20h,34h,20h,35h,20h,36h,20h,37h,20h,38h,20h,39h,20hbyte3ah,20h,3bh,20h,3ch,20h,3dh,20h,3eh,20h,3fh,20h,13,10……byte0习题解答23习题2.14解答2……ca='2'cas=20hbyteca,'0|',cas,20h,cas+1,20h,cas+2,20h,cas+3,20h,cas+4,20h,cas+5,20h,cas+6,20h,cas+7,20hbytecas+8,20h,cas+9,20h,cas+0ah,20h,cas+0bh,20h,cas+0ch,20h,cas+0dh,20h,cas+0eh,20h,cas+0fh,20h,13,10cas=cas+10hca=ca+1byteca,'0|',cas,20h,cas+1,20h,cas+2,20h,cas+3,20h,cas+4,20h,cas+5,20h,cas+6,20h,cas+7,20hbytecas+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……习题解答24习题2.15•数据段有如下定义:vardword12345678h•现以字节为单位按地址从低到高的顺序,写出这个变量内容。var变量的内容:78H、56H、34H、12H•并说明如下指令的执行结果:moveax,var;EAX=12345678Hmovbx,wordptrvar;BX=5678Hmovcx,wordptrvar+2;CX=1234Hmovdl,byteptrvar;DL=78Hmovdh,byteptrvar+3;DH=12H习题解答25习题2.17,说明源操作数的寻址方式(1)movedx,1234h立即数(2)movedx,vard直接(3)movedx,ebx寄存器(4)movedx,[ebx]寄存器间接(5)movedx,[ebx+1234h]寄存器相对(6)movedx,vard[ebx]寄存器相对(7)movedx,[ebx+edi]基址变址(8)movedx,[ebx+edi+1234h]相对基址变址(9)movedx,vard[esi+edi]相对基址变址(10)movedx,[ebp*4]带比例寻址第3章习题:通用数据处理指令3.1简答题(1、2、5、7、9)3.2判断题(1、4、5、7、10)3.3填空题(2、4、5、8、10)3.4、3.6、3.11、3.14、3.163.21、3.22习题解答273.1简答题-1(1)如何修改“MOVESI,WORDPTR250”语句使其正确?•删除“WORDPTR”即可(2)为什么说“XCHGEDX,CX”是一条错误的指令?•源、目标寄存器位数不同,不能用该指令进行数据交换(5)执行了一条加法指令后,发现ZF=1,说明结果是什么?•(5)表明运算结果为0习题解答283.1简答题-2(7)大小写字母转换使用了什么规律?•大小写字母转换利用它们的ASCII码相差20H(9)除法指令“DIVESI”的被除数是什么?•被除数64位,在EDX和EAX中,EDX保存高32位、EAX保存低32位习题解答293.2判断题-1(1)指令“MOVEAX,0”使EAX结果为0,所以标志ZF=1。•错,MOV指令不影响标志(4)虽然ADD指令和SUB指令执行后会影响标志状态,但执行前的标志并不影响它们的执行结果。•对(5)80减90(80