ImageVerifierCode 换一换
格式:DOCX , 页数:96 ,大小:133.50KB ,
资源ID:29402398      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/29402398.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(汇编语言与接口技术习题答案.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

汇编语言与接口技术习题答案.docx

1、汇编语言与接口技术习题答案第 3 章 80X86 的指令系统和寻址方式本章主要讲授: 80X86 的数据类型、寻址方式、指令格式、指令系统(数据传送指令、 算术运算指令、 逻辑运算指令、 串操作数指令、 控制转移指令、 处理机指令和高级语言指令) 和 80486 指令等。通过本章的学习,注意下面几方面的内容:一、掌握 80X86 的数据类型;二、掌握 80X86 的寻址方式;三、掌握 80X86 的指令系统及它们的一些使用实例。四、了解保护属性检查指令、高级语言指令以及 Cache 管理指令等。习题精解1已知 DS= 2000H, BX= 0100H, SI = 0002H,存储单元20100

2、H20103H依次存放 12 34 56 78H , 21200H21203H依次存放2A 4C B7 65H,说明下列每条指令执行后 AX寄存器的内容。(1)MOVAX,1200H(2)MOVAX,BX(3)MOVAX,1200H(4)MOVAX,BX(5)MOVAX,BX+1100H(6)MOVAX,BX + SI(7)MOVAX,BXSI+1100H参考答案:根据物理地址形成公式:物理地址=段基址x 16 +有效地址,得:1)1200H2)0100H3)4C2AH4)3412H5)4C2AH6)7856H(7) 65B7H分析:本题主要考查点是数据寻址方式,寻址方式就是指令中用于说明操作

3、数所在地址 的方法,或者是寻找操作数有效地址的方法。包括数据寻址和转移地址寻址两大类。80X86的数据寻址方式总结如下:(1) 立即寻址方式操作数作为指令的一部分而直接写在指令中, 这种操作数称为立即数, 这种寻址方式就 称为立即数寻址方式。注: 1、使用立即寻址的指令主要用来给寄存器赋初值,并且只能用于源操作数字段2 、不能直接给段寄存器和标志寄存器赋予立即数。例: MOV AL,5MOV AX,1234HMOV EAX,12345678H(2)寄存器寻址方式操作数存放在指令规定的某个寄存器(如:对于 16 位操作数,寄存器可以是 AX,BX, CX DX SI , DL, SP或BP;而对

4、8位操作数,寄存器可以是 AH AL, BH, BL, CH CL, DH或DL)中。例: MOV AL,BHMOV AX,CXMOV EAX,EBP(3)存储器寻址操作数存放在存储器中, 在寻址时要计算存储单元的有效地址, 有效地址可以由以下四 种成分组成:位移量:是存放在指令中的一个8位、16位或 32 位的数;BX、BP、任何32位通用寄存器都可以作SI、DI、除ESP外的32位通用寄存器都基址:其值存放在基址寄存器中。为基址寄存器使用;变址:其值存放在变址寄存器中。可以作为基址寄存器使用;比例因子:是 80386 及后继机型中新增寻址方式中的术语。其值可为 1、 2、4、 8。根据计算

5、有效地址 EA方法不同,存储器寻址又分为:1)直接寻址 (direct addressing)操作数的有效地址是指令的一部分, 它与操作码一起存放在代码段中, 默认操作数 在数据段(DS)中,如果操作数定义在其它段中,则应在指令中指定段超越前缀。EA即数例: MOV AX,200H2)寄存器间接寻址( register indirect addressing )操作数的有效地 EA存放在基址寄存器(BX或BP)或变址寄存器(DI或SI)中。计 算物理地址的缺省段仍然是 SI、DI和BX为DS BP为SSEA=W存器中的值例: MOV AX,BXMOV AX,BPMOV AX,SIMOV AX,

6、DI3)寄存器相对寻址( register relative addressing 由指定的寄存器内容,加上指令中给出的 8位或 16位偏移量(当然要由一个段寄 存器作为地址基准)作为操作数的偏移地址。EA =基址或变址寄存器(BX BP、DI、Sl)8位或16位的位移量 注:寄存器相对寻址常用于存取表格或一维数组中的元素把表格的起始地址作为位移量, 元素的下标值放在间址寄存器中(或反之) 。例: MOV AX,BX+2MOV AX,BP+1MOV AX,SI-1MOV AX,DI-2MOV AX,BX+2000HMOV AX,BP+1000HMOV AX,SI-1000HMOV AX,DI-

7、2000H4)基址变址寻址( base-plus-index addressing )有效地址由基址寄存器(BP或BX的内容加上变址寄存器 (DI或SI)的内容形成。 如基址寄存器为 BX时,与DS形成的物理地址指向数据段;如基址寄存器为 BP时,与 SS形成的物理地址指向堆栈段。EA=基址寄存器的内容+变址寄存器的内容 例: MOV AX,BX+SIMOV AX,BX+DIMOV AX,BP+SIMOV AX,BP+DI 注:一条指令中同时使用基址寄存器或变址寄存器是错误的。例: MOV CL, BX+BP 或 MOV AX, SI+DI 均为非法指令。5)基址变址相对寻址( base-pl

8、us-index relative addressing )有效地址由基址寄存器(BP或BX)、变址寄存器(DI或SI)及相对偏移量形成。 缺省段的使用仍然是 DS与BX组合,SS与BP组合。EA=基址寄存器的内容+变址寄存器的内容8 位或16位的位移量例: MOV AX,BX+SI+2MOV AX,BX+DI+1MOV AX,BP+SI-1MOV AX,BP+DI-2MOV AX,BX+SI+2000HMOV AX,BX+DI+1000HMOV AX,BP+SI-1000HMOV AX,BP+DI-2000H6)比例变址寻址方式 有效地址为变址寄存器的内容乘以指令中指定的比例因子再加上位移量

9、之和。例:MOV EAX,ESI X 4+100H7) 基址比例变址寻址方式有效地址为变址寄存器的内容乘以指令中指定的比例因子再加上基址寄存器的内 容之和。例: MOV EAX,ESIX 4+EBX8) 相对基址比例变址寻址方式有效地址为变址寄存器的内容乘以指令中指定的比例因子、加上基址寄存器的内 容,再加上位移量之和。例: MOV EAX,ESIX 4+EBX+8(4) 隐含寻址 指令操作数是隐含的,在指令中未显式地指明。例: MUL BL指令隐含了被乘数 AL 及乘积 AX。类似的指令还有:DIV、CBW MOV等。(5) I/O 端口寻址直接端口寻址端口地址用 8 位立即数( 0 255

10、)表示例:IN AL , 21H;从I/O端口地址为21H的端口中读取数据送到 AL中。 间接端口寻址I/O 端口地址事先存放在规定的 DX寄存器中(0 65535)例: MOV DX, 0FF03HOUT DX , AL; 将 AL 中的内容输出到地址由 DX; 内容所指定的端口中2指出下列指令的错误1)MOV CX,DL( 2)MOV IP, AX3)MOV ES,1234H( 4)MOV ES, DS5)MOV AL,300( 6)MOV SP, AX7)MOV AX,BX+DI( 8)MOV 20H, AH参考答案:1 )字长不同2) 不能给 IP 赋值3) 立即数不能直接赋给段寄存器

11、4) 给段寄存器赋值一定需要累加器5) 立即数 300 超过 8 位不能赋给 8 位寄存器 AL( 6)SP 不能作为间址寄存器寻址( 7) 两个寄存器不能相加( 8)立即数不能作为目标操作数分析:本题主要考查在应用通用传送指令时,需要注意以下几项(以 MOV旨令为例):(1)传送指令可传送 8 位数据,也可传送 16 位数据,具体取决于指令中涉及的寄存器是 8 位还是 16 位,也取决于立即数的形式。例如 :MOV AX 35AH ;传送DS段中偏移地址为35AH的字单元内容至 AXMOV BL, 35AH ;传送DS段中偏移地址为 35AH的字节单元内容至 BLMOV BP, WORD P

12、TR 18H;传送16位数据0018H至SS段中两个单元MOV BP, BYTE PTR 37H ;传送8位数据37H至SS段中一个单元(2)传送指令中总是既含源操作数,又含目的操作数,两者之中至少有一个是用寄器来指出 的,这可减少指令长度。因此,一个立即数不能直接送直接寻址的内存单元。交换指令(XCHG两个操作数都不能是立即数。例如: MOV WORD PTR 1000H, 32A8H 错误MOV WORD PTR BX, 32A8H 正确(3)传送指令不能在两个内存单元之间直接传送数据。例如: MOV 2000H , 35AH 错误MOV WORD PTR BX, 8729H 错误(4)在

13、传送指令中,寄存器既可以作为源操作数,也可以作为目的操作数,但 CS寄存器不能作为目的操作数,换句话说,这个寄存器的值不能随意修改。而IP 寄存器既不能作源操作数,也不能作目的操作数。例如 : MOV CS, 35AH错误MOV CS, AX错误MOV AX, IP错误MOV IP, WORD PTRBX错误(5) 用 BX、SI、DI 来间接寻址时,默认的段寄存器为DS,而用BP来间接寻址时,默认的段寄存器为 SS。例如:对于 MOVWORBTRBP ,1000 和 MOVWORDTRBX ,2000,设 DS=3000H SS=4000H BX=5000H BP=6000H则前一条指令将立

14、即数 1000送到物理地址为 46000H和4600伯 的两单元中,后一条指令将立即数 2000送到物理地址为35000H和35001H的两单元中。(6)8086系统规定,凡是遇到给 SS寄存器赋值的传送指令时,系统会自动禁止外部中断, 等到本条指令和下条指令执行后,又自动恢复对 SS寄存器赋值前的中断开放状态。这样做是为了允许程序员连续用两条指令分别对 SS和SP寄存器赋值,同时又防止堆栈空间变动过程中出现中断。了解这点后,就应该注意在修改 SS和SP的指令之间不要插入其他指令。例如,下述写法是错误的 :MOV SS, AXMOV DL, 38HMOV AH, 2INT 21HMOV SP,

15、 BX(7)除了一些直接影响 FLAGS的指令(如POPF外卜,一般传送指令不改变标志寄存器的内容。(8)立即数不能直接送段寄存器 DS ES以及SS例如 : MOV DS, 875BH 错误MOV AX, 875BHMOV DS, AX 正确MOV WORD PTRBX, 32A8HMOV ES, BX 正确实际上,上述几点中有些要求适于其它通用传送型指令,甚至也适合其他种类的指 令,读者可在后面的学习中不断去总结和积累。3.已知数字 09对应的格雷码依次为: 18H, 34H, 05H, 06H, 09H, OAH, 0CH 11H, 12H,14H,它存在于以 TABLE为首地址(设为

16、200H)的连续区域中。对如下程序段的每条指 令加上注释,说明每条指令的功能和执行结果。LEA BX, TABLEMOV AL , 8XLAT参考答案:LEABX TABLE ; 得到表首地址,放在寄存器 BX中MOV AL , 8XLAT利用查表转换指令,实质是查找 8 的格雷码;立即数8赋值给AL,即AL中存放的是相对于表首的偏移地址结果是 (AL)=12H程序段的功能为:把表首地址即 200H赋给BX 。分析:本题主要考查查表转换指令 (XLAT) 的应用。指令功能:ALDS BX+AL。用途:用于查表(或对一维数组操作),表首地址的偏移地址在 BX中,表长度可达256字节。把BX的值作

17、为内存字节数组首地址、下标为 AL的数组元素的值传送给AL。有两个隐含操作数 BX和AL。4.什么是堆栈?它的工作原则是什么?它的基本操作有哪两个?对应哪两种指令?参考答案:FILO),它有两种基本堆栈是一段具有特殊存取规则的数据区,工作原则是先进后出( 的操作即进栈和出栈,对应的指令伪 PUSH和POP分析:堆栈的应用很多,应用 8086/8088 系统堆栈时我们要注意下面几点:堆栈是向下生长的;工作原则是先进后出( FILO);有两种操作,即进栈和出栈,只能进行字操作,且是对准字; 对应的逻辑地址是 SS:SP。6.给出下列各条指令执行后 AL的值,以及CF、ZF、SF、OF和PF的状态。

18、MOV AL, 89HADD AL, ALADD AL, 9DHCMP AL, 0BCHSUB AL, ALDEC ALINC AL参考答案:MOV AL, 89H ;( AL)=89H各状态标志位不变ADD AL, AL ;( AL)=12HCF=1ZF=0 SF=0OF=1PF=1ADD AL, 9DH ;( AL)=AFHCF=0ZF=0 SF=1OF=0PF=1CMP AL, 0BCH ;( AL)=AFHCF=1ZF=0 SF=0OF=0PF=0SUB AL, AL ;( AL)=0HCF=0ZF=1 SF=0 OF=0PF=1DEC AL ;( AL)=FFHCF=0(不影响 CF

19、)ZF=0 SF=0OF=1PF=1INC AL ;( AL)=0HCF=0(不影响 CF)ZF=1 SF=0OF=1PF=1分析:本题主要考查指令对标志位的影响,总结如下。(1) 数据传送指令除了几个专门给标志寄存器赋值的指令(如: POPF SAHF等)外,对标志位都没有影响。(2) 算术运算指令中除了 DEC和INC不影响CF外,其他算术指令对6个状态标志位都有影 响。(3) 逻辑运算指令中,NOT不影响标志位,其它四种指令将使 CF=OF=0 AF无定义,而SF、 ZF和PF则根据运算结果而定。以上详细情况请参考教材。12.编写程序段完成如下要求:(1) 用位操作指令实现 AL (无符

20、号数)乘以10。(2) 用逻辑运算指令实现数字 09的ASCII码与非压缩BCD码的互相转换。(3) 把DX AX中的双字右移4位。( 1 )参考答案:MOV BL, ALMOV CL, 3SHL AL, CL ; ALX 8SHL BL, 1 ; ALX 2ADD AL, BL ; ALX 8+ AL X 2= AL X 10分析:本题主要考察用移位指令实现乘除法1) 算术移位(SAL/SAR 把操作数看做有符号数;逻辑移位(SHL/SHR)把操作数看做无符号数。2) 移位位数放在 CL寄存器中,如果只移 1位,也可以直接写在指令中。例如:MOV CL,4SHR AL,CL ; AL中的内容

21、右移 4位3) 影响 C,P,S,Z,O 标志。4) 结果未溢出时:左移1位三操作数X 2右移1位三操作数/25) 用移位操作代替乘除法可提高运算速度。在编写汇编程序的时候,应该注意程序的执 行效率,使程序得到最大程度的优化,特别是在处理海量数据的时候,这就变得非常 必要。移位指令作为系统指令的一部分,可以在一定程度上帮助我们实现复杂的数值 运算,而不会增加系统负担,这是非常有意义的。例:计算 x*10。采用乘法指令 :MOV BL,10MUL BL共需 70-77 个 T 周期。采用移位和加法指令 :SALAL,1; 2TMOVAH,AL; 2TSALAL,1; 2TSALAL,1; 2TA

22、DDAL,AH; 3T只需11个T周期,仅相当于乘法指令的1/7。2)参考答案:ASCII码转换成非压缩型 BCD码的指令是:AND AL, 0FH非压缩型BCD转换成ASCII码的指令是:OR AL, 30H分析:根据 ASCII码与BCD码的特点:1) 0 9 的 ASCII 码为 30H39H;2) 09非压缩型BCD码为0H9H。又根据或(OF)指令和与(AND指令的特点:1)任何数和1相或(OF)结果都得1 ;2)任何数和0相与(AND结果都得0。(3)参考答案:MOV BX, DXANDBX,0FHMOVCL,12SHLBX,CLMOVCL,4SHRDX,CLSHRAX,CLORA

23、X, 1BX分析:实现32位数据逻辑右移,要注意高字的低位移到低字的高位。14已知数据段500H600H处存放了一个字符串,说明下列程序段执行后的结果。MOV SI ,600HMOV DI ,601HMOVAX ,DSMOVES ,AXMOVCX ,256STDREPMOVSB参考答案:把500H600H处的256个字节的字符串顺序存放到偏移地址 601H的地方。分析:本题和15题都在考查串操作指令的应用。串操作类指令可以用来实现内存区域的数据串操作。 这些数据串可以是字节串, 也可以是字串。(1)重复指令前缀串操作类指令可以与重复指令前缀配合使用。 从而可以使操作得以重复进行,及时停止。重复

24、指令前缀的几种形式见表 3-1所示。表3-1重复前缀汇编格式执行过程影响指令REP若(CX)=重复(1)-=0,则退出;(2) CX=CX-1; (3)执行后续指令;(4)(3)MOVS STOS,LODSREPE/REPZ(1)若(CX) = 0或ZF=0,则退出;(2) CX=CX-1; ( 3)执行后续指令;(4)重复(1) - (3)CMPS SCASREPNE/REPNZ(1)若(CX) = 0或ZF=1,则退出;(2) CX=CX-1; ( 3)执行后续指令; (4)重复(1) - (3)CMPS SCAS(2)串操作指令串操作指令共有五种,具体见表 3-2。对串指令要注意以下几个

25、问题:各指令所使用的默认寄存器是: SI (源串地址),DI (目的地址),CX (字串长度),AL (存取或搜索的默认值)。源串在数据段,目的串在附加段。方向标志与地址指针的修改。 DF= 1,则修改地址指针时用减法; DF=O时,则修改地址指针时用加法。MOVS STOS LODS旨令不影响标志位。表3-2 串操作指令功能指令格式执行操作串传送MOVS DST SRCMOVSBMOVSW由操作数说明是字节或字操作;其余同 MOVS或MOVSW(ES : DI) (DS : SI) ; SI=SI 1 , DI=DI 1 ;(ES : DI) (DS : SI) ; SI=SI 2, DI=

26、DI 2 ;串比较CMPS DST SRCCMPSBCMPSW由操作数说明是字节或字操作;其余同 CMPS或CMPSW(ES : DI) - (DS : SI) ; SI=SI 1 , DI=DI 1 ;(ES : DI) - (DS : SI) ; SI=SI 2, DI=DI 2 ;串搜索SCAS DSTSCASBSCASW由操作数说明是字节或字操作;其余同 SCASB或 SCASWAL- (ES : DI) ; DI=DI 1;AX- (ES : DI) ; DI=DI 2 ;存串STOS DSTSTOSBSTOSW由操作数说明是字节或字操作;其余同 STOSB或 STOSWAL (ES

27、 : DI) ; DI=DI 1;AX (ES : DI) ; DI=DI 2 ;取串LODS SRCLODSBLODSW由操作数说明是字节或字操作;其余同 LODSB或 LODSW(DS : SI) AL; SI=SI 1;(DS : SI) AX SI=SI 2 ;17控制转移类指令中有哪几种寻址方式?参考答案:控制转移类指令中的寻址方式主要有:(1 )段内直接寻址;(2 )段内间接寻址;(3)段间直接寻址;(4 )段间间接寻址。分析:题17题22都是在考查与转移地址有关的寻址方式。与数据有关的寻址方式最终确定的是一个数据的地址, 而与转移地址有关的寻址方式最终确定一条指令的地址。有三种表

28、示转移距离的操作符:(1)SHORT专移,称为短转移,位移量用一个字节( 8位)来表示。(2)NEAR 转移,称为近转移,位移量用 16 位表示,因为程序控制仍然在当前代码段,所以只修改IP的值,CS的值不变。(3)FAR转移,称为远转移,因为程序控制超出了当前代码段,所以 CS和IP都必须修改为新的值。几种转移方式可以描述为:(1)段内直接寻址这种寻址方式在指令中直接指出转向地址,如:JMP SHORT NEXTJMP NEAR PTR AGAIN其中,NEXT和AGAIN均为转向的符号地址。在机器指令中,操作码之后给出 的是相对于当前 IP 值的位移量(转移距离) ,所以,转向的有效地址是当前 IP 值与指 令中给出的位移量( 8 位或 16 位)之和。注:这种寻址方式适用于条件转移及无条件转移指令,当用于条件转移指令时,位移量只允许 8位。例如: 已知( DS)= 2000H , (BX)= 1256H,(SI)= 528FH, 位移量 = 20A1H ,(232F7H)= 3280H,(264E5H)= 2450H 。则执行 JMP BX 指令后(IP )= 1256H执行 JMP BXSI 指令后(IP) = (16d X( D

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1