




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、3232位汇编语言习题解答位汇编语言习题解答课件制作:课件制作: 钱晓捷钱晓捷钱晓捷,钱晓捷,3232位汇编语言程序设计,机械工业出版社位汇编语言程序设计,机械工业出版社第第1 1章习题:汇编语言基础章习题:汇编语言基础1.1 1.1 简答题简答题(1 1、3 3、6 6、7 7、8 8)1.1.2 2 判断题(判断题(1 1、6 6、7 7、8 8、9 9)1.1.3 3 填空填空题题(3 3、4 4、5 5、7 7、1010)1.91.9、1.131.13、1.151.15、1.161.16习题解答习题解答3 31.1 1.1 简答题简答题-1-1(1 1)哪个处理器的指令系统成为)哪个处
2、理器的指令系统成为Intel 80 x86Intel 80 x86系列处系列处理器的基本指令集?理器的基本指令集?80868086(3 3)什么是通用寄存器?)什么是通用寄存器?一般指处理器最常使用的整数寄存器,可用于保存一般指处理器最常使用的整数寄存器,可用于保存整数数据、地址等整数数据、地址等(6 6)最高有效位)最高有效位MSBMSB是指哪一位?是指哪一位?数据的最高位,例如对数据的最高位,例如对8 8、1616、3232位数据,位数据,MSBMSB依次依次指指D D7 7、D D1515和和D D3131位位习题解答习题解答4 41.1 1.1 简答题简答题-2-2(7 7)汇编语言中
3、的标识符与高级语言的变量和常量名)汇编语言中的标识符与高级语言的变量和常量名的组成原则有本质的区别吗?的组成原则有本质的区别吗?没有没有(8 8)汇编语言的标识符大小写不敏感意味着什么?)汇编语言的标识符大小写不敏感意味着什么?表示字母大小写不同、但表示同一个符号表示字母大小写不同、但表示同一个符号习题解答习题解答5 51.2 1.2 判断题判断题1 1)EAXEAX也被称为累加器,因为它使用最频繁。也被称为累加器,因为它使用最频繁。对,对,EAXEAX中的中的A A来自英文累加器(来自英文累加器(AccumulatorAccumulator)6 6)处理器的传送指令)处理器的传送指令MOVM
4、OV属于汇编语言的执行性语句属于汇编语言的执行性语句对对7 7)汇编语言的语句由明显的)汇编语言的语句由明显的4 4部分组成,不需要分隔部分组成,不需要分隔符区别。符区别。错,使用了分隔符才有了明显的错,使用了分隔符才有了明显的4 4部分部分8 8)MASMMASM汇编语言的注释用分号开始,不能用中文分号汇编语言的注释用分号开始,不能用中文分号对,源程序中的分隔符以及各种标识符都是英文对,源程序中的分隔符以及各种标识符都是英文9 9)程序终止执行也就意味着汇编结束,所以两者含义)程序终止执行也就意味着汇编结束,所以两者含义相同。相同。错,两者完全是两个概念错,两者完全是两个概念习题解答习题解答
5、6 61.3 1.3 填空题填空题-1-1(3 3)IA-32IA-32处理器有处理器有8 8个个3232位通用寄存器,其中位通用寄存器,其中EAXEAX,_,_和和EDXEDX,可以分成,可以分成1616位和位和8 8位操作;还有另位操作;还有另外外4 4个是个是_,_,_,和,和_。EBXEBX,ECXECX,ESIESI,EDIEDI,EBPEBP,ESPESP(4 4)寄存器)寄存器EDXEDX是是_位的,其中低位的,其中低1616位的名称是位的名称是_,还可以分成两个还可以分成两个8 8位的寄存器,其中位的寄存器,其中D0D0D7D7和和D8D8D15D15部分可以分别用名称部分可以
6、分别用名称_和和_表示。表示。3232,DXDX,DLDL,DHDH(5 5)IA-32IA-32处理器有处理器有_个段寄存器,它们都是个段寄存器,它们都是_位的。位的。6 6,1616习题解答习题解答7 71.3 1.3 填空题填空题-2-2(7 7)逻辑地址由)逻辑地址由_和和_两部分组成。代码段中下一两部分组成。代码段中下一条要执行的指令由条要执行的指令由CSCS和和_寄存器指示,后者在实地寄存器指示,后者在实地址模型中起作用的仅有址模型中起作用的仅有_寄存器部分。寄存器部分。段基地址,偏移地址,段基地址,偏移地址,EIPEIP,IPIP(1010)MASMMASM要求汇编语言源程序文件
7、的扩展名是要求汇编语言源程序文件的扩展名是_,汇编产生扩展名为汇编产生扩展名为OBJOBJ的文件被称为的文件被称为_文件,编写文件,编写3232位位WindowsWindows应用程序应选择应用程序应选择_存储模型。存储模型。ASMASM,目标模块,目标模块,FLATFLAT习题解答习题解答8 8习题习题1.91.9IA-32IA-32处理器有哪三类基本段,各是什么用途?处理器有哪三类基本段,各是什么用途?解答:解答:代码段:存放程序的指令代码代码段:存放程序的指令代码数据段:存放当前运行程序所用的数据数据段:存放当前运行程序所用的数据堆栈段:主存中堆栈所在的区域堆栈段:主存中堆栈所在的区域习
8、题解答习题解答9 9习题习题1.131.13汇编语言语句有哪两种,每种语句由哪汇编语言语句有哪两种,每种语句由哪4 4个部分组成个部分组成解答:解答:汇编语句有两种汇编语句有两种n执行性语句(处理器指令)执行性语句(处理器指令)n说明性语句(伪指令)说明性语句(伪指令)每个语句有每个语句有4 4部分组成部分组成n标号标号n指令助记符指令助记符n操作数或参数操作数或参数n注释注释习题解答习题解答1010习题习题1.151.15MASMMASM汇编语言中,下面哪些是程序员可以使用的自汇编语言中,下面哪些是程序员可以使用的自定义标识符。定义标识符。FFHFFH,DSDS,AgainAgain,nex
9、tnext,datadata,h_asciih_ascii,6364b6364b,flatflat解答:解答:FFHFFH,AgainAgain,nextnext,h_asciih_ascii其他符号错误的原因:其他符号错误的原因:nDSDS是数据段寄存器名是数据段寄存器名n6364b6364b是数字开头是数字开头ndatadata是汇编语言使用预定义符号,表示数据段地址是汇编语言使用预定义符号,表示数据段地址nflatflat是表示平展存储模型的关键字是表示平展存储模型的关键字习题解答习题解答1111习题习题1.161.16汇编语言程序的开发有哪汇编语言程序的开发有哪4 4个步骤,分别利用什
10、么程个步骤,分别利用什么程序完成、产生什么输出文件。序完成、产生什么输出文件。解答:解答:汇编语言程序的开发有汇编语言程序的开发有4 4个步骤:个步骤:n编辑编辑:用文本编辑器形成一个以:用文本编辑器形成一个以ASMASM为扩展名的源程序文件。为扩展名的源程序文件。n汇编汇编:用汇编程序将:用汇编程序将ASMASM文件转换为文件转换为OBJOBJ模块文件。模块文件。n连接连接:用连接程序将一个或多个目标文件链接成一个:用连接程序将一个或多个目标文件链接成一个EXEEXE或或COMCOM可执行文件。可执行文件。n调试调试:用调试程序排除错误,生成正确的可执行文件。:用调试程序排除错误,生成正确的
11、可执行文件。第第2 2章习题:数据表示和寻址章习题:数据表示和寻址2 2.1 .1 简答题简答题(2 2、3 3、4 4、7 7、8 8)2 2. .2 2 判断判断题题(2 2、4 4、8 8、9 9、1010)2 2. .3 3 填空填空题题(1 1、2 2、3 3、8 8、9 9)2.102.10、2.142.14、2.152.15、2.172.17习题解答习题解答13132.1 2.1 简答题简答题-1-1(2 2)字符)字符“F”“F”和数值和数值46H46H作为作为MOVMOV指令的源操作数指令的源操作数有区别吗?有区别吗?没有,因为字符没有,因为字符“F”“F”的的ASCIIAS
12、CII码就是数值码就是数值46H46H(3 3)为什么可以把指令)为什么可以把指令“MOV EAX, (34“MOV EAX, (3467H)67H)* *3”3”中中的数值表达式看成是常量?的数值表达式看成是常量?汇编程序在汇编过程中对数值表达式计算,得到一汇编程序在汇编过程中对数值表达式计算,得到一个确定的数值,故称数值表达式为常量个确定的数值,故称数值表达式为常量(4 4)汇编语言为什么规定十六进制数若以)汇编语言为什么规定十六进制数若以A AF F开头,开头,需要在前面加个需要在前面加个0 0?以便与标识符区别,因为标识符要求以字母(或特以便与标识符区别,因为标识符要求以字母(或特殊符
13、号)开头殊符号)开头习题解答习题解答14142.1 2.1 简答题简答题-2-2(7 7)为什么将查找操作数的方法称为数据寻)为什么将查找操作数的方法称为数据寻“址址”方方式?式?指令的操作数需要通过存储器地址或指令的操作数需要通过存储器地址或I/OI/O地址,才能地址,才能查找到数据本身,故称数据寻址方式查找到数据本身,故称数据寻址方式(8 8)为什么变量)为什么变量VARVAR在指令在指令“MOV EAX, VAR”“MOV EAX, VAR”中表达中表达直接寻址?直接寻址?因为这里的变量名因为这里的变量名VARVAR实际上表达了从变量所存放的实际上表达了从变量所存放的主存单元,即主存单元
14、,即 地址地址 习题解答习题解答15152.2 2.2 判断题判断题-1-1(2 2)常用的)常用的BCDBCD码为码为8421 BCD8421 BCD码,其中的码,其中的8 8表示表示D3D3位的位的权重。权重。对对(4 4)用)用“BYTE”“BYTE”和和“DWORD”“DWORD”定义变量,如果初值相定义变量,如果初值相同,则占用的存储空间也一样多。同,则占用的存储空间也一样多。错。用错。用BYTEBYTE只占一个存储单元,而只占一个存储单元,而DWORDDWORD要占要占4 4个存个存储单元储单元(8 8)立即数寻址只会出现在源操作数中。)立即数寻址只会出现在源操作数中。对对习题解答
15、习题解答16162.2 2.2 判断题判断题-2-2(9 9)存储器寻址方式的操作数当然在主存了。)存储器寻址方式的操作数当然在主存了。对对(1010)指令)指令“MOV EAX, VAR+2”“MOV EAX, VAR+2”与与“MOV EAX, VAR2”“MOV EAX, VAR2”功能相同。功能相同。对,仅是不同的形式罢了对,仅是不同的形式罢了习题解答习题解答17172.3 2.3 填空题填空题-1-1(1 1)计算机中有一个)计算机中有一个“01100001”“01100001”编码。如果把它认编码。如果把它认为是无符号数,它是十进制数为是无符号数,它是十进制数_;如果认;如果认为它
16、是为它是BCDBCD码,则表示真值码,则表示真值_;又如果;又如果它是某个它是某个ASCIIASCII码,则代表字符码,则代表字符_。9797,6161,小写字母,小写字母a a(2 2)C C语言用语言用“n”“n”表示让光标回到下一行首位,在表示让光标回到下一行首位,在汇编语言中需要输出两个控制字符:一个是回车,汇编语言中需要输出两个控制字符:一个是回车,其其ASCIIASCII码是码是_,它将光标移动到当前,它将光标移动到当前所在行的首位;另一个是换行,其所在行的首位;另一个是换行,其ASCIIASCII码是码是_,它将光标移到下一行。,它将光标移到下一行。0DH0DH(1313),),
17、0AH0AH(1010)习题解答习题解答18182.3 2.3 填空题填空题-2-2(3 3)定义字节变量的伪指令助记符是)定义字节变量的伪指令助记符是_,获取变,获取变量名所具有的偏移地址的操作符是量名所具有的偏移地址的操作符是_。BYTEBYTE,OFFSETOFFSET(8 8)指令)指令“MOV EAX, OFFSET MSG”“MOV EAX, OFFSET MSG”的目的操作数和的目的操作数和源操作数分别采用源操作数分别采用_和和_寻址方式。寻址方式。寄存器寻址,立即数寻址寄存器寻址,立即数寻址(9 9)已知)已知ESIESI04000H04000H,EBXEBX20H20H,指令
18、,指令“MOV EAX, “MOV EAX, ESI+EBXESI+EBX* *2+8”2+8”中访问的有效地址是中访问的有效地址是_。04000H04000H20H20H2 28 804048H04048H习题解答习题解答1919习题习题2.10-12.10-1按照如下要求定义变量或符号常量:按照如下要求定义变量或符号常量:(1 1) my1bmy1b为字符串变量:为字符串变量:Personal ComputerPersonal Computermy1bmy1bbyte Personal Computerbyte Personal Computer(2 2) my2bmy2b为用十进制数表示
19、的字节变量:为用十进制数表示的字节变量:2020my2bmy2bbyte 20byte 20(3 3) my3bmy3b为用十六进制数表示的字节变量:为用十六进制数表示的字节变量:2020my3bmy3bbyte 14hbyte 14h(4 4) my4bmy4b为用二进制数表示的字节变量:为用二进制数表示的字节变量:2020my4bmy4bbyte 00010100bbyte 00010100b习题解答习题解答2020习题习题2.10-22.10-2按照如下要求定义变量或符号常量:按照如下要求定义变量或符号常量:(5 5) my5wmy5w为为2020个未赋值的字变量个未赋值的字变量my5w
20、my5wword 20 dup(?)word 20 dup(?)(6 6) my6cmy6c为为100100的常量的常量my6cmy6c= 100= 100(7 7) my7cmy7c表示字符串:表示字符串:Personal ComputerPersonal Computermy7cmy7cequ equ 习题解答习题解答2121习题习题2.142.14按照如下输出格式,在屏幕上显示按照如下输出格式,在屏幕上显示ASCIIASCII表表编程在数据段直接构造这样的表格、填写相应编程在数据段直接构造这样的表格、填写相应ASCIIASCII代码值(不是字符本身),然后使用字代码值(不是字符本身),然
21、后使用字符串显示子程序符串显示子程序DISPMSGDISPMSG实现显示实现显示习题解答习题解答2222习题习题2.142.14解答解答1 1.data.datatabletablebyte |0 1 2 3 4 5 6 7 8 9 A B C D E F, byte |0 1 2 3 4 5 6 7 8 9 A B C D E F, 13,1013,10byte -+-, byte -+-, 13,1013,10byte 20 |,byte 20 |,20h20h,20h,20h,21h21h,20h,20h,22h22h,20h,20h,23h23h,20h, ,20h, 24h24h,2
22、0h,20h,25h25h,20h,20h,26h26h,20h,20h,27h27h,20h,20h,28h28h,20h,20h,29h29h,20h,20hbyte byte 2ah2ah,20h,20h,2bh2bh,20h,20h,2ch2ch,20h,20h,2dh2dh,20h,20h,2eh2eh,20h, ,20h, 2fh2fh,20h,13,10,20h,13,10byte 30 |,byte 30 |,30h30h,20h,20h,31h31h,20h,20h,32h32h,20h,20h,33h33h,20h, ,20h, 34h34h,20h,20h,35h35h,
23、20h,20h,36h36h,20h,20h,37h37h,20h,20h,38h38h,20h,20h,39h39h,20h,20hbyte byte 3ah3ah,20h,20h,3bh3bh,20h,20h,3ch3ch,20h,20h,3dh3dh,20h,20h,3eh3eh,20h, ,20h, 3fh3fh,20h,13,10,20h,13,10byte 0byte 0习题解答习题解答2323习题习题2.142.14解答解答2 2caca=2=2cascas=20h=20hbytebyte ca,0 |,cas,20h,cas+1,20h,cas+2,20h, ca,0 |,ca
24、s,20h,cas+1,20h,cas+2,20h, cas+3,20h,cas+4,20h,cas+5,20h,cas+6,20h,cas+7,20hcas+3,20h,cas+4,20h,cas+5,20h,cas+6,20h,cas+7,20hbytebyte cas+8,20h,cas+9,20h,cas+0ah,20h,cas+0bh,20h, 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,10cas+0ch,20h,cas+0dh,20h
25、,cas+0eh,20h,cas+0fh,20h,13,10cascas=cas+10h=cas+10hcaca=ca+1=ca+1bytebyte ca,0 |,cas,20h,cas+1,20h,cas+2,20h, ca,0 |,cas,20h,cas+1,20h,cas+2,20h, cas+3,20h,cas+4,20h,cas+5,20h,cas+6,20h,cas+7,20hcas+3,20h,cas+4,20h,cas+5,20h,cas+6,20h,cas+7,20hbytebyte cas+8,20h,cas+9,20h,cas+0ah,20h,cas+0bh,20h, c
26、as+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+0ch,20h,cas+0dh,20h,cas+0eh,20h,cas+0fh,20h,13,10习题解答习题解答2424习题习题2.152.15数据段有如下定义:数据段有如下定义:varvardword 12345678hdword 12345678h现以字节为单位按地址从低到高的顺序,写出这个现以字节为单位按地址从低到高的顺序,写出这个变量内容。变量内容。varvar变量的内容:变量的内容:
27、78H78H、56H56H、34H34H、12H12H并说明如下指令的执行结果:并说明如下指令的执行结果:mov eax,varmov eax,var; ;EAXEAX12345678H12345678Hmov bx,word ptr varmov bx,word ptr var; ;BXBX5678H5678Hmov cx,word ptr var+2mov cx,word ptr var+2; ;CXCX1234H1234Hmov dl,byte ptr varmov dl,byte ptr var; ;DLDL78H78Hmov dh,byte ptr var+3mov dh,byte
28、ptr var+3; ;DHDH12H12H习题解答习题解答2525习题习题2.172.17,说明源操作数的寻址方式,说明源操作数的寻址方式(1 1)mov edx,1234hmov edx,1234h立即数立即数(2 2)mov edx,vardmov edx,vard直接直接(3 3)mov edx,ebxmov edx,ebx寄存器寄存器(4 4)mov edx,ebxmov edx,ebx寄存器间接寄存器间接(5 5)mov edx,ebx+1234hmov edx,ebx+1234h 寄存器相对寄存器相对(6 6)mov edx,vardebxmov edx,vardebx寄存器相对
29、寄存器相对(7 7)mov edx,ebx+edimov edx,ebx+edi基址变址基址变址(8 8)mov edx,ebx+edi+1234hmov edx,ebx+edi+1234h相对基址变址相对基址变址(9 9)mov edx,vardesi+edimov edx,vardesi+edi相对基址变址相对基址变址(1010)mov edx,ebpmov edx,ebp* *44带比例寻址带比例寻址第第3 3章习题:通用数据处理指令章习题:通用数据处理指令3 3.1 .1 简答题简答题(1 1、2 2、5 5、7 7、9 9)3 3. .2 2 判断判断题题(1 1、4 4、5 5、7
30、 7、1010)3 3. .3 3 填空填空题题(2 2、4 4、5 5、8 8、1010)3.43.4、3.63.6、3.113.11、3.143.14、3.163.163.213.21、3.223.22习题解答习题解答27273.1 3.1 简答题简答题-1-1(1 1)如何修改)如何修改“MOV ESI, WORD PTR 250”“MOV ESI, WORD PTR 250”语句使其语句使其正确?正确?删除删除“WORD PTR”“WORD PTR”即可即可(2 2)为什么说)为什么说“XCHG EDX,CX”“XCHG EDX,CX”是一条错误的指令?是一条错误的指令?源、目标寄存器
31、位数不同,不能用该指令进行数据源、目标寄存器位数不同,不能用该指令进行数据交换交换(5 5)执行了一条加法指令后,发现)执行了一条加法指令后,发现ZFZF1 1,说明结果,说明结果是什么?是什么?(5 5)表明运算结果为)表明运算结果为0 0习题解答习题解答28283.1 3.1 简答题简答题-2-2(7 7)大小写字母转换使用了什么规律?)大小写字母转换使用了什么规律?大小写字母转换利用它们的大小写字母转换利用它们的ASCIIASCII码相差码相差20H20H(9 9)除法指令)除法指令“DIV ESI”“DIV ESI”的被除数是什么?的被除数是什么?被除数被除数6464位,在位,在EDX
32、EDX和和EAXEAX中,中,EDXEDX保存高保存高3232位、位、EAXEAX保存低保存低3232位位习题解答习题解答29293.2 3.2 判断题判断题-1-1(1 1)指令)指令“MOV EAX,0”“MOV EAX,0”使使EAXEAX结果为结果为0 0,所以标志,所以标志ZFZF1 1。错,错,MOVMOV指令不影响标志指令不影响标志(4 4)虽然)虽然ADDADD指令和指令和SUBSUB指令执行后会影响标志状态,指令执行后会影响标志状态,但执行前的标志并不影响它们的执行结果。但执行前的标志并不影响它们的执行结果。对对(5 5)8080减减9090(80809090)需要借位,所以
33、执行结束后,)需要借位,所以执行结束后,进位标志进位标志CFCF1 1。对,减法时借位也用对,减法时借位也用CFCF标志反映标志反映习题解答习题解答30303.2 3.2 判断题判断题-2-2(7 7)无符号数在前面加零扩展,数值不变;有符号数)无符号数在前面加零扩展,数值不变;有符号数前面进行符号扩展,位数加长一位、数值增加一倍。前面进行符号扩展,位数加长一位、数值增加一倍。错,符号扩展也不改变数值大小错,符号扩展也不改变数值大小(1010)SHLSHL指令左移一位,就是乘指令左移一位,就是乘1010。错,左移一位,相当于乘错,左移一位,相当于乘2 2。这里的位是二进制比特。这里的位是二进制
34、比特位位习题解答习题解答31313.3 3.3 填空题填空题-1-1(2 2)指令)指令“POP EDX”“POP EDX”的功能也可以用的功能也可以用MOVMOV和和ADDADD指令指令实现,依次应该是实现,依次应该是_和和_指令。指令。MOV EDX,ESPMOV EDX,ESP,ADD ESP,4ADD ESP,4(4 4)进行)进行8 8位二进制数加法:位二进制数加法:BAHBAH6CH6CH,8 8位结果是位结果是_,标志,标志PFPF_。如果进行。如果进行1616位位二进制数加法:二进制数加法:45BAH45BAH786CH786CH,1616位结果是位结果是_,标志,标志PFPF
35、_。26H26H,0 0,BE26HBE26H,0 0习题解答习题解答32323.3 3.3 填空题填空题-2-2(5 5)已知)已知AXAX98H98H,执行,执行“NEG AX”“NEG AX”指令后,指令后,AXAX_,标志,标志SFSF_。68H68H,0 0(8 8)指令)指令“XOR EAX, EAX”“XOR EAX, EAX”和和“SUB EAX, EAX”“SUB EAX, EAX”执行执行后,后,EAXEAX_,CFCFOFOF_。而指令。而指令“MOV EAX, 0”“MOV EAX, 0”执行后,执行后,EAXEAX_,CFCF和和OFOF没有变化。没有变化。0 0,0
36、 0,0 0(1010)欲将)欲将EDXEDX内的无符号数除以内的无符号数除以1616,使用指令,使用指令“SHR “SHR EDX, _”EDX, _”,其中后一个操作数是一个立即数。,其中后一个操作数是一个立即数。4 4习题解答习题解答3333习题习题3.43.4请给每种组合各举一个实例请给每种组合各举一个实例(1 1)mov reg, immmov reg, imm(2 2)mov mem, immmov mem, imm(3 3)mov reg, regmov reg, reg(4 4)mov mem, regmov mem, reg(5 5)mov seg, regmov seg,
37、reg(6 6)mov reg, memmov reg, mem(7 7)mov seg, memmov seg, mem(8 8)mov reg, segmov reg, seg(9 9)mov mem, segmov mem, seg你的解答你的解答习题解答习题解答3434习题习题3.63.6使用使用MOVMOV指令实现交换指令指令实现交换指令“XCHG EBX,EDI”XCHG EBX,EDI”功能。功能。解答:解答:mov eax,ebxmov eax,ebxmov ebx,edimov ebx,edimov edi,eaxmov edi,eax习题解答习题解答3535习题习题3.11
38、-13.11-1执行如下程序片断,说明每条指令的执行结果执行如下程序片断,说明每条指令的执行结果(1 1)mov eax,80hmov eax,80h ; ;EAXEAX80H80Hadd eax,3add eax,3; ;EAXEAX83H83H,CFCF0 0,SFSF0 0add eax,80hadd eax,80h ; ;EAXEAX103H103H,CFCF0 0,OFOF0 0adc eax,3adc eax,3; ;EAXEAX106H106H,CFCF0 0,ZFZF0 0习题解答习题解答3636习题习题3.11-23.11-2执行如下程序片断,说明每条指令的执行结果执行如下程
39、序片断,说明每条指令的执行结果(2 2)mov eax,100mov eax,100 ; ;EAXEAX100100(64H64H)add ax,200add ax,200; ;EAXEAX300300(12CH12CH),),CFCF0 0(3 3)mov eax,100mov eax,100 ; ;EAXEAX100100(64H64H)add al,200add al,200; ;EAXEAX4444(2CH2CH),),CFCF1 1(包含(包含256256的进位含义:的进位含义:2562564444300300)习题解答习题解答3737习题习题3.11-33.11-3执行如下程序片断
40、,说明每条指令的执行结果执行如下程序片断,说明每条指令的执行结果(4 4)mov al,7fhmov al,7fh; ;ALAL7FH7FHsub al,8sub al,8; ;ALAL77H77H,CFCF0 0,SFSF0 0sub al,80hsub al,80h; ;ALALF7HF7H,CFCF1 1,OFOF1 1sbb al,3sbb al,3; ;ALALF3HF3H,CFCF0 0,ZFZF0 0习题解答习题解答3838习题习题3.14-13.14-1请分别用一条汇编语言指令完成如下功能:请分别用一条汇编语言指令完成如下功能:(1 1)把)把EBXEBX寄存器和寄存器和EDX
41、EDX寄存器的内容相加,结果存入寄存器的内容相加,结果存入EDXEDX寄存器。寄存器。add edx,ebxadd edx,ebx(2 2)用寄存器)用寄存器EBXEBX和和ESIESI的基址变址寻址方式把存储器的基址变址寻址方式把存储器的一个字节与的一个字节与ALAL寄存器的内容相加,并把结果送到寄存器的内容相加,并把结果送到ALAL中。中。add al,ebx+esiadd al,ebx+esi习题解答习题解答3939习题习题3.14-23.14-2请分别用一条汇编语言指令完成如下功能:请分别用一条汇编语言指令完成如下功能:(3 3)用)用EBXEBX和位移量和位移量0B2H0B2H的寄存
42、器相对寻址方式把存的寄存器相对寻址方式把存储器中的一个双字和储器中的一个双字和ECXECX寄存器的内容相加,并把结寄存器的内容相加,并把结果送回存储器中。果送回存储器中。add bx+0b2h,cxadd bx+0b2h,cx(4 4)将)将3232位变量位变量VARDVARD与数与数3412H3412H相加,并把结果送回相加,并把结果送回该存储单元中。该存储单元中。add varw,3412hadd varw,3412h(5 5)把数)把数0A0H0A0H与与EAXEAX寄存器的内容相加,并把结果送寄存器的内容相加,并把结果送回回EAXEAX中。中。(5 5) add eax,0a0hadd
43、 eax,0a0h习题解答习题解答4040习题习题3.16-13.16-1执行如下程序片断,说明每条指令的执行结果执行如下程序片断,说明每条指令的执行结果(1 1)mov esi,10011100bmov esi,10011100b ; ;ESIESI 9CH9CHand esi,80hand esi,80h; ;ESIESI 80H80Hor esi,7fhor esi,7fh; ;ESIESI FFHFFHxor esi,0fehxor esi,0feh ; ;ESIESI 01H01H(2 2)mov eax,1010bmov eax,1010b; ;EAXEAX 1010B1010B(
44、可有前导可有前导0 0)shr eax,2shr eax,2; ;EAXEAX 0010B0010B,CFCF1 1shl eax,1shl eax,1; ;EAXEAX 0100B0100B,CFCF0 0and eax,3and eax,3; ;EAXEAX 0000B0000B,CFCF0 0习题解答习题解答4141习题习题3.16-23.16-2执行如下程序片断,说明每条指令的执行结果执行如下程序片断,说明每条指令的执行结果(3 3)mov eax,1011bmov eax,1011b; ;EAXEAX 1011B1011B(可有前导可有前导0 0)rol eax,2rol eax,2
45、; ;EAXEAX 101100B101100B,CFCF0 0rcr eax,1rcr eax,1; ;EAXEAX 10110B10110B,CFCF0 0or eax,3or eax,3; ;EAXEAX 10111B10111B,CFCF0 0(4 4)xor eax,eaxxor eax,eax; ;EAXEAX0 0,CFCF0 0,OFOF0 0; ;ZFZF1 1,SFSF0 0,PFPF1 1习题解答习题解答4242习题习题3.213.21如下程序片段实现如下程序片段实现EAXEAX乘以某个数乘以某个数X X的功能,请判断的功能,请判断X X?请使用一条乘法指令实现上述功能。
46、请使用一条乘法指令实现上述功能。mov ecx, eaxmov ecx, eaxshl eax, 3shl eax, 3lea eax, eax+eaxlea eax, eax+eax* *88sub eax, ecxsub eax, ecx解答:解答:8 8* *8+8-18+8-17171imul eax, 71imul eax, 71习题解答习题解答4343习题习题3.223.22请使用移位和加减法指令编写一个程序片段计算:请使用移位和加减法指令编写一个程序片段计算:EAXEAX2121,假设乘积不超过,假设乘积不超过3232位。提示:位。提示:21212 24 42 22 22 20
47、0。解答解答:mov ebx,eaxmov ebx,eax;EBX;EBXEAXEAX2 20 0shl ebx,2shl ebx,2;EBX;EBXEAXEAX2 22 2add eax,ebxadd eax,ebx;EAX;EAXEAXEAX(2(22 22 20 0) )shl ebx,2shl ebx,2;EBX;EBXEAXEAX2 24 4add eax,ebxadd eax,ebx;EAX;EAXEAXEAX(2(24 42 22 22 20 0) )第第4 4章习题:程序结构章习题:程序结构4 4.1 .1 简答题简答题(2 2、5 5、6 6、9 9、1010)4 4. .2
48、 2 判断判断题题(2 2、4 4、6 6、7 7、1010)4 4. .3 3 填空填空题题(2 2、3 3、4 4、5 5、6 6)4.44.4、4.74.7、4.154.15、4.174.17、4.274.27、4.294.29习题解答习题解答45454.1 4.1 简答题简答题-1-1(2 2)数据的直接寻址和指令的直接寻址有什么区别?)数据的直接寻址和指令的直接寻址有什么区别?数据的直接寻址给出数据所在的存储器地址,指令数据的直接寻址给出数据所在的存储器地址,指令的直接寻址给出指令所在的存储器地址。的直接寻址给出指令所在的存储器地址。(5 5)什么是奇偶校验?)什么是奇偶校验?数据通
49、信时,数据的某一位用做传输数据的奇偶校数据通信时,数据的某一位用做传输数据的奇偶校验位,数据中包括校验位在内的验位,数据中包括校验位在内的“1”“1”的个数恒为奇的个数恒为奇数,就是奇校验;恒为偶数,就是偶校验数,就是奇校验;恒为偶数,就是偶校验(6 6)助记符)助记符JZJZ和和JEJE为什么表达同一条指令?为什么表达同一条指令?两个数相减,差值为两个数相减,差值为0 0(JZJZ)与两个数相等()与两个数相等(JEJE)是)是一个含义一个含义习题解答习题解答46464.1 4.1 简答题简答题-2-2(9 9)如果循环体的代码量远超过)如果循环体的代码量远超过128128个字节,还能用个字
50、节,还能用LOOPLOOP指令实现计数控制循环吗?指令实现计数控制循环吗?不能,因为不能,因为LOOPLOOP指令的目标地址采用相对短转移,指令的目标地址采用相对短转移,只能在只能在128128127127字节之间循环字节之间循环(1010)什么是)什么是“先循环、后判断先循环、后判断”循环结构?循环结构?指先执行循环体,然后判断是否继续循环的结构,指先执行循环体,然后判断是否继续循环的结构,这种结构通常至少执行一次循环体这种结构通常至少执行一次循环体习题解答习题解答47474.2 4.2 判断题判断题2 2)指令的相对寻址都是近转移。)指令的相对寻址都是近转移。对对4 4)JMPJMP指令对
51、应高级语言的指令对应高级语言的GOTOGOTO语句,所以不能使用语句,所以不能使用错,需要使用错,需要使用6 6)JAJA和和JGJG指令的条件都是指令的条件都是“大于大于”,所以是同一个指,所以是同一个指令的两个助记符。令的两个助记符。错,错,JAJA针对无符号数,针对无符号数,JGJG针对有符号数针对有符号数7 7)JCJC和和JBJB的条件都是的条件都是CFCF1 1,所以是同一条指令。,所以是同一条指令。对。无符号小于(对。无符号小于(JBJB)必然借位()必然借位(JCJC)1010)若)若ECXECX0 0,则,则LOOPLOOP指令和指令和JECXJECX指令都发生转移。指令都发
52、生转移。对对习题解答习题解答48484.3 4.3 填空题填空题-1-1(2 2)MASMMASM给短转移、近转移和远转移定义的类型名依给短转移、近转移和远转移定义的类型名依次是次是_、_和和_。SHORTSHORT,NEARNEAR,FARFAR(3 3)假设在平展存储模型下,)假设在平展存储模型下,EBXEBX1256H1256H,双字变量,双字变量TABLETABLE的偏移地址是的偏移地址是20A1H20A1H,线性地址,线性地址32F7H32F7H处存放处存放3280H3280H,执行指令,执行指令“JMP EBX” JMP EBX” 后后EIPEIP_,执,执行指令行指令“JMP T
53、ABLEEBX”JMP TABLEEBX”后后EIPEIP_。1256H1256H,3280H3280H习题解答习题解答49494.3 4.3 填空题填空题-2-2(4 4)“CMP EAX,3721H”CMP EAX,3721H”指令之后是指令之后是JZJZ指令,发生转指令,发生转移的条件是移的条件是EAXEAX_,此时,此时ZFZF_。3721H3721H,1 1(5 5)执行)执行“SHR EBX,4”SHR EBX,4”指令后,指令后,JNCJNC发生转移,说明发生转移,说明EBXEBX的的D D3 3_。0 0(6 6)在)在EDXEDX等于等于0 0时转移,可以使用指令时转移,可以
54、使用指令“CMP CMP EDX,_”EDX,_”、也可以使用、也可以使用“TEST EDX,_”TEST EDX,_”构成构成条件,然后使用条件,然后使用JEJE指令实现转移。指令实现转移。0 0,EDXEDX习题解答习题解答5050习题习题4.44.4已知已知var1var1、var2var2、var3var3和和var4var4是是3232位无符号整数,位无符号整数,用汇编语言程序片段实现如下用汇编语言程序片段实现如下C+C+语句:语句:var4=(var1var4=(var1* *6)/( var2-7)+var36)/( var2-7)+var3mov eax,var1mov eax
55、,var1mov ebx,6mov ebx,6mul ebxmul ebx; ;var1var1* *6 6mov ebx,var2mov ebx,var2sub ebx,7sub ebx,7; ;var2-7var2-7div ebxdiv ebx; ;(var1(var1* *6)/( var2-7)6)/( var2-7) add eax,var3add eax,var3; ;(var1(var1* *6)/( var2-7)+var36)/( var2-7)+var3mov var4,eaxmov var4,eax习题解答习题解答5151习题习题4.74.7定义定义COUNTCOUNT
56、(假设为(假设为1010)个元素的)个元素的3232位数组,输入元位数组,输入元素编号(素编号(0 0COUNT-1COUNT-1),利用),利用DISPHDDISPHD子程序输出其子程序输出其地址、利用地址、利用DISPSIDDISPSID子程序输出其值。子程序输出其值。; ;数据段数据段countcount= 10= 10arrayarraydword 0,1,2,3,4,5,6,7,8,9dword 0,1,2,3,4,5,6,7,8,9; ;代码段代码段call readuidcall readuid; ;输入输入N N,小于,小于1010lea eax,arrayeaxlea eax
57、,arrayeax* *44;EAX;EAX地址地址call disphdcall disphd; ;显示地址显示地址mov eax,arrayeaxmov eax,arrayeax* *44;EAX;EAX变量值变量值call dispsidcall dispsid; ;显示数值显示数值习题解答习题解答5252习题习题4.15-14.15-1IA-32IA-32处理器的指令处理器的指令CDQCDQ将将EAXEAX符号扩展到符号扩展到EDXEDX。假若。假若没有该指令,编程实现该指令功能。没有该指令,编程实现该指令功能。(1 1)按照符号扩展的含义编程,即:)按照符号扩展的含义编程,即:EAX
58、EAX最高为最高为0 0,则,则EDXEDX0 0;EAXEAX最高为最高为1 1,则,则EDXEDXFFFFFFFFHFFFFFFFFH。test eax,8000htest eax,8000h ; ;测试最高位测试最高位jz next1jz next1; ;最高位为最高位为0 0,转移,转移mov edx,0ffffffffhmov edx,0ffffffffh; ;最高位为最高位为1 1,设置,设置EDXEDXFFFFFFFFHFFFFFFFFHjmp donejmp done; ;跳过另一个分支跳过另一个分支next1:next1:mov dx,0mov dx,0; ;设置设置EDXE
59、DX0 0done:done:习题解答习题解答5353习题习题4.15-24.15-2编程实现指令编程实现指令CDQ,CDQ,将将EAXEAX符号扩展到符号扩展到EDXEDX(2 2)使用移位等指令进行优化编程。)使用移位等指令进行优化编程。方法方法1 1:mov edx,eaxmov edx,eaxsar edx,31sar edx,31方法方法2 2:rol eax,1rol eax,1rcr edx,1rcr edx,1sar edx,31sar edx,31ror eax,1ror eax,1习题解答习题解答5454习题习题4.17-14.17-1编写一个程序,先提示输入数字编写一个程
60、序,先提示输入数字“Input NumberInput Number:0 09”9”,然后在下一行显示输入的数字,结束;如,然后在下一行显示输入的数字,结束;如果不是键入了果不是键入了0 09 9数字,就提示错误数字,就提示错误“Error!”Error!”,继续等待输入数字。继续等待输入数字。方法方法1 1:使用字符输入输出子程序:使用字符输入输出子程序; ;数据段数据段inmsginmsgbyte Input number(09): ,0byte Input number(09): ,0ermsgermsgbyte 0dh,0ah,Error! Input again: ,0byte 0d
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 物理-福建省莆田市2025届高中毕业班第二次教学质量检测试卷(莆田二检)试题和答案
- 历史-陕西省安康市2025届高三下学期第二次质量联考(安康二模)试题和答案
- 除草布施工方案
- 广东省肇庆市2024-2025年高中地理 农业和工业练习评讲教学实录 新人教版必修2
- 个人瓷砖买卖合同范例
- 供货茶叶合同范例
- 关于定金合同范例
- 公司合作加盟合同范例
- 构建班级共同价值观的策略计划
- 学生课外阅读推广活动计划
- (二调)武汉市2025届高中毕业生二月调研考试 生物试卷(含标准答案)
- (一模)临沂市2025届高三高考第一次模拟考试政治试卷(含答案详解)
- 2025年安徽职业技术学院单招职业适应性考试题库含答案
- 2025年中考百日誓师大会校长发言稿(二)
- 1.2男生女生课件(共15张)-2024-2025学年统编版道德与法治七年级下册
- 2025年安徽审计职业学院单招职业技能测试题库附答案
- 2025年共青科技职业学院单招职业技能测试题库学生专用
- 2025年黑龙江林业职业技术学院单招职业技能测试题库含答案
- 2025年01月吉林白山市长白朝鲜族自治县事业单位公开招聘工作人员(含专项)和边境村稳边固边工作专干84人(1号)笔试历年典型考题(历年真题考点)解题思路附带答案详解
- Module 2 Unit 2 It will snow in Harbin.(说课稿)-2023-2024学年外研版(三起)英语六年级下册
- 真需求-打开商业世界的万能钥匙
评论
0/150
提交评论