欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 幼儿/小学教育>
  • 中学教育>
  • 高等教育>
  • 研究生考试>
  • 外语学习>
  • 资格/认证考试>
  • 论文>
  • IT计算机>
  • 法律/法学>
  • 建筑/环境>
  • 通信/电子>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    汇编语言程序设计(第四版)第14章【课后答案】.docx

    • 资源ID:500184       资源大小:129KB        全文页数:96页
    • 资源格式: DOCX        下载积分:5
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录 微博登录
    二维码
    微信扫一扫登录
    下载资源需要5
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    汇编语言程序设计(第四版)第14章【课后答案】.docx

    1、汇编语言程序设计第四版【课后习题答案】第1章汇编语言根底知识习题1.1简述计算机系统的硬件组成及各局部作用。解答CPU:包括运算器、控制器和存放器组。运算器执行所有的算术和逻辑运算;控制器负责把指指令逐条从存储器中取出,经译码分析后向机器发出各种控制命令,并正确完成程序所要求的功能;存放器组为处理单元提供所需要的数据。存储器:是计算机的记忆部件,它用来存放程序以及程序中所涉及的数据。外部设备:实现人机交换和机间的通信。习题1.2)明确以下概念或符号:主存和辅存,RAM和ROM,存储器地址和I/O端口,KB、MB、GBfflTBo解答主存又称内存是主存储器的简称,主存储器存放当前正在执行的程序和

    2、使用的数据,CPU可以直接存取,它由半导体存储器芯片构成其本钱高、容量小、但速度快。辅存是辅助存储器的简称,辅存可用来长期保存大量程序和数据,CPU需要通过I/O接口访问,它由磁盘或光盘构成,其本钱低、容量大,但速度慢。RAM是随机存取存储器的英语简写,由于CPU可以从RAM读信息,也可以向RAM写入信息,所以RAM也被称为读写存储器,RAM型半导体存储器可以按地址随机读写,但这类存储器在断电后不能保存信息;而ROM中的信息只能被读出,不能被修改,ROM型半导体通常只能被读出,但这类存储器断电后能保存信息。存储器由大量存储单元组成。为了区别每个单元,我们将它们编号,于是,每个存储单元就有了一个

    3、存储地址,I/O接口是由一组存放器组成,为了区别它们,各个存放器进行了编号,形成I/O地址,通常称做I/O端口。KB是千字节、MB是兆字节、GB是吉字节和TB是太字节,它们都是表示存储器存储单元的单位。习题1.3什么是汇编语言源程序、汇编程序、目标程序?解答用汇编语言书写的程序就称为汇编语言源程序;完成汇编工作的程序就是汇编程序;由汇编程序编译通过的程序就是目标程序。习题1.4汇编语言与高级语言相比有什么优缺点?解答汇编语言与高级语言相比的优点:由于汇编语言本质就是机器语言,它可以直接地、有效地控制计算机硬件,因而容易产生运行速度快,指令序列短小的高效目标程序,可以直接控制计算机硬件部件,可以

    4、编写在时间和空间两方面最有效的程序。汇编语言与高级语言相比的缺点:由于与处理器密切相关导致通用性差、可移植性差,汇编语言功能有限,又涉及存放器、主存单元等硬件细节,编写汇编语言比拟繁琐,调试起来也比拟困难,编译程序产生的目标程序往往比拟庞大、程序难以优化,运行速度慢。习题1.5将以下十六进制数转换为二进制和十进制表示FFHOH5EH(4)EFH52EHIOHIFH(8)ABH解答1FFH11111111B255DOHOBOD(3J5EH1011110B94D4)EFH239D(5)2EH1O111OB(6)IOH16D7IFH31D8ABH171D习题1.6)将以下十进制数转换为BCD码表示(

    5、1)122243681275128(6)255(7)123446D 10000BIllllB10101011B 10010001(2) 10001001(3) 001101104 100100002458解答120001001024001001006801101000127000100100111128000100101000(6)255001001010101习题1.7将以下BCD码转换为十进制数(5) 00001000(6) 10010111 10000001 00000010解答(1) 9189369008978102习题1.8将以下十进制数分别用8位二进制数的原码、反码和补码表示(1)

    6、02-127(3)127(4)-575126(6)-126(7)-128(8)68解答0+0000000000000000000000000-0100000001111111100000000-127111111111000000010000001127011111110111111101111111-57101011111101000011010001126011111100111111001111110(6)-126111111101000000110000010(7) -12810000000(8) 68010001000100010001000100习题1.9完成以下二进制数的运算(1

    7、)1011+1001(2)1011-1001310111001(4)101110001001(5)1011A10016IOIlVlooI(7)-1011(8)1011?1001解答(1)1011+1001=1010021011-1001=00103 10111001=11000114 101110001001=10100,余数10001011A1001=1001(6) 1011V1OO1=1O11(7) -1011=0100(8) Iol1?100I=OoI0(?代表异或)习题LI0数码09、大写字母AZ、小写字母az对应的ASCn码分别是多少?ASCIl码为Odh、Oah对应的是什么字符?解

    8、答数码09:30H39H大写字母AZ:41H5AH小写字母az:61H-7AHASCn码为Odh、Oah分别对应回车和换行控制字符。习题1.11计算机中有一个01100001编码,如果把它认为是无符号数,它是十进制什么数?如果认为它是BCD码,那么表示什么数?又如果它是某个ASCII码,那么代表哪个字符?解答十进制无符号数:OIlOOoolB=61H=97BCD码:61ASCII码:a习题1.12简述Intel80x86系列微处理器在指令集方面的开展。解答1978年Intel,正式推出了16位8086CPU,1979年Intel推出了准16位微处理器8088,随后,Intel推出了80186/

    9、80188,80186/80188指令系统比8086指令系统新增了假设干条实用的指令,涉及堆栈操作、移位指令、过程指令和边界检测及乘法指令,1982年Intel推出80286CPU,80286指令系统包括全部80186指令及新增的保护指令15条,其中有些保护方式在实方式下也可以使用,1985年,Intel8086推出微处理器地进入第三代80386CPU,80386指令系统在兼容原来16位指令系统的根底上,全面升级为32位,还新增了有关位操作、条件设置指令以及控制、调试和测试存放器的传送指令等,1989年zIntel推出了80486CPz80486将浮点处理单元FPU集成进来,还采用了精简指令集

    10、计算机技术RISC和指令流水线方式,还新增了用于多处理器和内部Cache操作的6条指令,1993年Intel制成了俗称586的微处理器,取名Pentium.Pentium仍为32位结构,地址总线为32位,对常用的简单指令用硬件实现,重新设计指令的微代码等,Pentium新增了一条8字节比拟交换指令和一条处理器识别指令以及4条系统专用指令,1996年推出了MMXPentiUm,新增了57条多媒休指令,1995年Intel推出PentiumPro新增了3条指令,1999年推出了PentiUmm新增了70条SSE指令,2000年推出的Pentium4新增了76条SSE2指令习题LI3什么是DoS和R

    11、oM-BlOS?解答DOS是DisketteOperatingsystem的缩写,意思是磁盘操作系统QC)S主要是面向磁盘的系统软件,说得简单些,就是人与机器的一座桥梁,是罩在机器硬件外面的一层外壳,是19811995年的个人电脑上使用的一种主要的操作系统。BIOS(BasicInput/OutputSystem)即根本输入输出系统,通常是固化在只读存储器ROM中,所以又称为ROM-BIOSo它直接对计算机系统中的输入、输出设备进行设备级、硬件级的控制,是连接软件程序和硬件设备之间的枢纽。ROM-BIOS是计算机系统中用来提供最低级、最直接的硬件控制的程序。习题1.14简述PC机最低IMB主存

    12、空间的使用情况。解答1根本RAM区(OOOoOH9FFFFH)该区共640KB,由DOS进行管理。在这个区域中操作系统要占用掉一局部低地址空间,其它那么向用户程序开放。(2)保存区RAM(Aooooh-BFFFFFH)该区为系统安排的显示缓冲存储区,共126KB,是显卡上的芯片提供支持,用于存放屏幕显示信息。但这局部地址空间实际上并没有全部使用。扩展区ROM(Cooooh-DFFFFH)该区128KB,由接口卡上的芯片提供支持,用于为系统不直接支持的外设安排设备驱动程序。用户固化的程序就可安排在这一段,系统的会对它进行确认和连接。系统区ROM(Eooooh-FFFFFH)该区共128KB,由系

    13、统占用,它主要提供ROM-BIOS程序,根本输入输出程序BIOS,是操作系统的重要组成局部,主要用来驱动输入输出设备,也负责系统的上电检测,磁盘引导等初始化操作,在ROM-BIOS中还有CMOS微机设置程序以及使用的字符图符信息等内容。习题1.15罗列8086CPU的8个8位和16位通用存放器,并说明各自的作用。解答1数据存放器:AX称为累加器,使用频度最高,用于算术、逻辑运算以及与外设传送信息等;BX称为基址存放器,常用做存放存储器地址;CX称为计数器,作为循环和串操作等指令中的隐含计数器;DX称为数据存放器,常用来存放双字长数据的高16位,或存放外设端口地址。2指针及变址存放器包括SLDL

    14、BRSR四个存放器,常用于存储器寻址时提供地址。SI是源变址存放器,DI是目的变址存放器,一般与DS联用确定数据段和附加段中某一存储单元地址,在串指令中,SI与DS联用、DI和ES联用,分别寻址数据段和附加段;同时,在串指令中,SI和Dl还都具有自动增量或减量的功能。SFI为堆栈指针存放器,指示栈顶的偏移地址;BP为基地址指针存放器,表示堆栈段中的基地址。SP与BP存放器均可与SS段存放器联合使用以确定堆栈段中的存储单元地址。习题1.16什么是标志,它有什么用途?状态标志和控制标志有什么区别?画出标志存放器FLAGS,说明各个标志的位置和含义。解答标志用于反映指令执行结果或控制指令执行形式。它

    15、是汇编语言程序设计中必须特别注意的一个方面,状态用来记录运行的结果的状态信息,许多指令的执行都将相应地设置它,控制标志位可由程序根据需要用指令设置,用来控制处理器执行指令的方式。CF是进位标志;ZF是零标志;SF是符号标志;PF奇偶标志;OF溢出标志;AF辅助进位标志;DF方向标志;IF中断允许标志;TF陷阱标志。习题LI7举例说明CF和C)F标志的差异。解答溢出标志OF和进位标志CF是两个意义不同的标志。进位标志表示无符号数运算结果是否超出范围,运算结果仍然正确;溢出标志表示有符号数运算结果是否超出范围,运算结果已经不正确。例1:3AH+7CH=B6H无符号数运算:58+124=182,范围

    16、内,无进位有符号数运算:58+124=182,范围外,有溢出例2:AAH+7CH=(1)26H无符号数运算:170+124=294,范围外,有进位有符号数运算:-86+124=28,范围内,无溢出习题1.18字和双字在存储器中如何存放,什么是小端方式?对字和双字存储单元,什么是它们的对齐地址?为什么要对齐地址?解答字或双字在存储器中占相邻的2个或4个存储单元;存放时,低字节存入低地址,高字节存入高地址;字或双字单元的地址用它的低地址来表示。80x86处理器采用的这种低对低,高对高的存储形式,被称为小端方式;将字单元安排在偶地址,双字节单元安排在模4地址,被称为地址对齐方式因为对于不对齐地址的数

    17、据,处理器访问时,需要额外的访问时间,所以通常应该将数据的地址对齐,以取得较高的存取速度。习题1.19)什么是8086中的逻辑地址和物理地址?逻辑地址如何转换成物理地址?请将如下逻辑地址用物理地址表达:(1)FFFFh:0(2)40h:17h(3)2000h:4500h(4)B821h:4567h解答在8086处理器中,对应每个物理存储单元都有一个唯一的20位编号,就是物理地址,从OoOooHFFFFFH.在8086内部和用户编程时,采用的段基地址:段内偏移地址形式称为逻辑地址。将逻辑地址中的段地址左移二进制4位对应16进制是一位,即乘以16,加上偏移地址就得到20位物理地址如下逻辑地址用物理

    18、地址表达:(1)FFFFh:0=FFFFOH240h:17h=00417H(3)2000h:4500h=24500H4B821h:4567h=BC777H不要算错习题1.208086有哪4种逻辑段,各种逻辑段分别是什么用途?解答代码段CodeSegment用来存放程序的指令序列。处理器利用CS:IP取得下一条要执行的指令。堆栈段(StackSegment)确定堆栈所在的主存区域。处理器利用SS:SP操作堆栈中的数据。数据段DataSegment)存放当前运行程序所用的数据。处理器利用DS:EA存取数据段中的数据。附加段ExtraSegment是附加的数据段,也用于数据的保存。处理器利用ES:E

    19、A存取数据段中的数据习题1.21数据的默认段是哪个,是否允许其他段存放数据?如果允许,如何实现,有什么要求?解答数据的默认段是安排在数据段,也经常安排在附加段,尤其是串操作的目的区必须是附加段,允许其它段存放数据,数据的存放比拟灵活的,实际上可以存放在任何一种逻辑段中,这时,只要明确指明是哪个逻辑段就可以了。习题1.22什么是操作码、操作数和寻址方式?有哪三种给出操作数的方法?解答操作码说明计算机要执行哪种操作,它是指令中不可缺少的组成局部,操作数是指令执行的参与者,也是各种操作的对象,我们把寻找数的方式叫做操作数的寻址方式。给出操作数的三种方法是直接给出,间接给出,隐藏操作数方式给出。习题1

    20、23什么是有效地址EA?8086的操作数如果在主存中,有哪些寻址方式可以存取它?解答DS存放数据段的段地址,存储器中操作数的偏移地址那么由各种主存方式得到,称之为有效地址EAo8086的操作数如果在主存中,可以存取它的寻址方式有直接寻址方式、存放器间接寻址方式、存放器相对寻址方式、基址变址寻址方式、相对基址变址寻址方式。习题1.24)说明以下指令中源操作数的寻址方式?如果BX=2000H,DI=40H,给出DX的值或有效地址EA的值。1movdx,1234h2movdx,1234h3movdx,bxmovdx,bx(5)movdx,bx+1234hmovdx,bx+di(7)movdx,bx

    21、di+1234h解答(1)直接寻址,EA=1234H2立即数寻址,D=1234H存放器寻址,DX=2000H间接寻址,EA=2000H相对寻址,EA=3234H(6)基址变址寻址,EA=2040H(7)相对基址变址寻址,EA=3274H第2章8086的指令系统习题2.1DS=2000HxBX=OlOOH.SI=0002H,存储单元20100H20103H依次存放12345678H,21200H-21203H依次存放2A4CB765H,说明以下每条指令执行完后AX存放器的内容。(1)movax,1200h2movax,bx(3)movax,1200hmovax,bx(5) movax,bx+1

    22、100h(6) movax,bx+simovax,bxsi+1100h解答(1) AX=1200H(2) AX=OlOOH(3) AX=4C2AH;偏移地址=bx=0100hAX=3412H;偏移地址=bx=0100hAX=4C2AH;偏移地址=bx+1100h=1200h6AX=7856H;偏移地址=bx+si=OlOOh+0002h=0102hA=65B7H;偏移=bx+si+1100h=0100h+0002h+1100h=1202h习题2.2指出以下指令的错误(1) movex,dl(2) movip,ax(3) movesf1234h(4 moveszdsmovalz3006movsp

    23、zax(7 movax,bx+di8mov20hzah解答1两操作数类型不匹配2IP指令指针禁止用户访问(3)立即数不允许传给段存放器4段存放器之间不允许传送(5)两操作数类型不匹配(6)目的操作数应为SI源操作数应为BX+DI(8)立即数不能作目的操作数习题2.3数字09对应的格雷码依次为:18H、34H、05H、06H、09H、OAH.OCH.11H、12H、14H,它存在于以table为首地址设为200H的连续区域中。请为如下程序段的每条指令加上注释,说明每条指令的功能和执行结果。leabx,tablemovalz8xlat解答leabx,table;获取table的首地址,BX=200

    24、Hmovalz8;传送欲转换的数字,AL=8Xlat;转换为格雷码,AL=12HP35习题2.4什么是堆栈,它的工作原那么是什么,它的根本操作有哪两个,对应哪两种指令?解答堆栈是一种按先进后出原那么存取数据的存储区域,位于堆栈段中,使用SS段存放器记录其段地址;它的工作原那么是先进后出;堆栈的两种根本操作是压栈和出栈,对应的指令是PUSH和POP0习题2.5SS=2200H、SP=OOBOH,画图说明执行下面指令序列时,堆栈区和SP的内容如何变化?movaxz8057hpushaxmovax,0f79hpushaxpopbxpopbx解答movaxz8057hpushaxmovaxz0f79h

    25、pushaxpopbx;bx=0f79hpopbx;DS:0f79h=8057h习题2.6给出以下各条指令执行后AL值,以及CF、ZF、SFxOF和PF的状态:moval,89haddalzaladdalz9dhcmpal,Obchsubal,aldecalincal懈答moval,89h;AL=89hCFZFSFOFPFaddalzaUAL=12hl0011;10001001+1000100110001OOlOaddal,9dh;AL=OafhOOlOl;OOOlOOlO+1001IlOl1010Illlcmpal,0bch;AL=OafhIOlOl;1010Illl-IOll1100*Ol

    26、OOOOllsubal,al;AL=OOh01001decal;AL=OffhOO101;00000000-00000001*1111Illlincal;AL=00h01001;1111Illl+00000001*1111Illl习题2.7设X、Y、Z均为双字数据,分别存放在地址为X、X+2;Y,Y+2;Z、Z+2的存储单元中,它们的运算结果存入W单元。阅读如下程序段,给出运算公式。movaxzXmovdx,X+2addax,Yadcdx,Y+2addax,24adcdx,0subax,Zsbbdx,Z2movWzaxmovW+2,dx解答W=X+Y+24-Z习题2.8请分别用一条汇编语言指令

    27、完成如下功能:(U把BX存放器和DX存放器的内容相加,结果存入DX存放器。2用存放器BX和SI的基址变址寻址方式把存储器的一个字节与AL存放器的内容相加,并把结果送到AL中。(3)用BX和位移量0B2H的存放器相对寻址方式把存储器中的一个字和CX存放器的内容相加,并把结果送回存储器中。(4)用位移量为0520H的直接寻址方式把存储器中的一个字与数3412H相加,并把结果送回该存储单元中。5把数OAOH与AL存放器的内容相加,并把结果送回AL中。解答(UADDDX,BX(2) ADDALJBX+SI3ADDBX+0B2HzCXADDWORDPTR0520H,3412H(5) ADDAL,OAOH

    28、习题2.9设X、Y、Z、V均为16位带符号数,分别装在X、Y、Z、V存储单元中,阅读如下程序段,得出它的运算公式,并说明运算结果存于何处。movaxzX;ax=XimulY;DX.AX=X*Ymovcxzax;cx=X*Y的低16位moxbxzdx;bx=X*Y的高16位movaxzZ;ax=Zcwdaddex,ax;cx=Z的低16位+X*Y的低16位adcbx,dx;bx=Z的高16位+X*Y的高16位+低位进位subex,540;cx=Z的低16位+X*Y的低16位540sbbbx,O;bx=Z的高16位+X*Y的高16位+低位进位-低位借位movaxzV;ax=Vcwdsubax,cx

    29、ax=V的低16位-Z的低16位+X*Y的低16位-540sbbdx,bx;dx=V的高16位-Z的高16位+X*Y的高16位+低位进位-低位借位-低位借位idivX;/X解答V-(X*Y+Z-540)XAX存商,DX存余数习题2.10指出以下指令的错误:(Uxchgsi,30h2popcs3subsi,di4pushahadcax,ds(6) addsi,80h7inal,3fch(8)outdx,ah解答(1)xchg的操作数不能是立即数2不应对CS直接赋值(3)两个操作数不能都是存储单元4堆栈的操作数不能是字节量(5)adc的操作数不能是段存放器(6)没有确定是字节还是字操作(7)in

    30、不支持超过FFH的直接寻址OUt只能以AL/AX为源操作数习题2.11给出以下各条指令执行后的结果,以及状态标志CF、OF、SFsZF、PF的状态。movaxz1470handaxzaxoraxfaxxorax,axnotaxtestax,OfOfOh解答movaxz1470h;AX=1470HCFZFSFOFPFandax,ax;AX=1470H00000;0001010001110000OraX,ax;AX=1470H00000xorax,ax;AX=0000H01001notax;AX=FFFFH01001testax,ffh;AX=FFFFH00101注意:MOV和NOT指令不影响标志

    31、位;其他逻辑指令使CF=OF=O,根据结果影响其他标志位。习题2.12假设例题2.34的程序段中,AX=08H,BX=IOH,请说明每条指令执行后的结果和各个标志位的状态。解答指令;执行结果CFOFSFZFPFmovsi,ax;SI=AX=0008Hshlsi,l;SI=2*AX=0010H0000Oaddsizax;SI=3*AX=0018HOOOOlmovdxrb;DX=BX=OOIOhOOOOlmovclz03h;CL=03H00001shldx,cl;DX=8*BX=0080HOuOOOsubdxzbx;DX=7*BX=0070H00000adddlsi;DX=7*BX+3*AX=00

    32、88H0OOOl注意:逻辑左移N次相当于无符号整数乘以2的N次方,逻辑右移N次相当于无符号整数除以2的N次方。移位指令根据移位的数据设置CF,根据移位后的结果影响SF,ZF,PFe在进行一位移位时,根据最高符号位是否改变设置OF,如改变那么OF=L另外,程序注释用u表示标志无定义不确定,表示无影响。习题2.13编写程序段完成如下要求:(1)用位操作指令实现AL无符号数乘以10(2)用逻辑运算指令实现数字O9的ASCII码与非压缩BCD码的互相转换3把DX.AX中的双字右移4位解答(1J;不考虑进位movbl,almovcl,3shlalzd;*8addalzbl;shlbl,laddalzbl

    33、考虑进位xorah,ahmovbx,axmovcl3shlaxzcladdax,bx;shlbx,laddax,bx(2)数字09的ASCII码是:30h39h非压缩BCD码的09是:OOh09h方法一:andal,Ofh;实现ASCII到非压缩BCD码的转换oral,30h;实现非压缩BCD码至IASCII的转换方法二:xoral,30h;求反D5D4位,其他不变;即高4位为3,那么变为0;高4位为0,那么变为33movd,4again:shrdxzl;实现逻辑右移;采用sardlVl那么实现算术右移rcraxzldeccljnzagain习题2.14AL=F7H表示有符号数-9,分别编写

    34、用SAR和IDIV指令实现的除以2的程序段,并说明各自执行后,所得的商是什么?解答(1)用Sar编写movalz0f7h;-9送ALIlll1001sarall;结果:AL=Illl1100B=0FBH即-5用idiv编写moval,0f7h;-9送alcbw;字节符号扩展位字movblz2;注意除数不可为立即数idivbl;结果:商为al=fch(-4);余数:ah=ffh(-1)结论:符号数的除法用idiv准确。习题2.15指令指针IP是通用存放器还是专用存放器?有指令能够直接它赋值吗?哪类指令的执行会改变它的值?解答指令指针IP不是通用存放器,不可直接赋值,属于专用存放器。有且仅有循环、

    35、转移、子程序调用和返回、中断类等指令可以改变它的值。习题2.16控制转移类指令中有哪三种寻址方式?解答控制转移类指令的寻址方式:相对寻址、直接寻址方式和间接寻址方式又可以分成存放器和存储器间接寻址。习题2.17什么是短转移ShC)rtjump、近转移nearjump和远转移farjump?什么是段内转移和段间转移?8086有哪些指令可以实现段间转移?解答短转移:指段内-128127之间的转移,位移量用一个字节表示近转移:指段内32K之间的转移,位移量用一个字表示远转移:指段间IMB范围的转移段内转移:指在同一个代码段内的转移,可以是短转移或者近转移段间转移:指转移到另外一个代码段,就是远转移8

    36、086/8088CPU的JMP、CALL和INTn指令可以实现段间转移习题2.188086的条件转移指令的转移范围有多大?实际编程时,你如何处理超出范围的条件转移?解答8086的条件转移的转移范围:在当前指令地址的+127128之内。如条件转移的转移范围超出此范围,可在此范围内安排一条无条件转移,再转移到范围外的目标地址。习题2.19假设DS=2000H,BX=1256H,SI=528FH,位移量TABLE=20AlH,232F7H=3280H,264E5H=2450H,试问执行以下段内间接寻址的转移指令后,转移的有效地址是什么?JMPBX2JMPTABLEBX(3) JMPBXSI解答(1转

    37、移的有效地址EA=BX=1256H(2)转移的有效地址EA=DS:2OA1H+1256H=232F7=3280H3转移的有效地址EA=DS1256H+528FH=264E5H=2450H习题2.20判断以下程序段跳转的条件1xoraxflelehjeequal2testal,10000001bjnztherecmpcxf64hjbthere解答(UAX=Ieleh异或后为OAL的DO或D7至少有一位为13CX无符号数64h习题2.21)设置CX=0,那么LOOP指令将循环多少次?例如:movex,0delaydoopdelay解答216次。习题2.22)假设AX和SI存放的是有符号数,DX和D

    38、I存放的是无符号数,请用比拟指令和条件转移指令实现以下判断:(1)假设DXDI,转到above执行;假设AXSL转到greater执行;3假设CX=O,转到zero执行;(4)假设AX-SI产生溢出,转到overflow执行;假设SIAX,转到less_eq执行;(6假设DIDX,转至Ibelow_eq执行。解答1假设DXDI,转到above执行cmpdxzdijaabove;=jnbeabove假设AXSI,转到greater执行cmpax,sijggreater;=jnlegreater3假设CX=0,转到zero执行cmpcx,0jzzero;=jcxzzero假设AX-SI产生溢出,转

    39、至Uoverflow执行;cmpax,sijooverflow(5)假设SIAX,转到less.eq执行;cmpsizax;cmpax,sijleless_eq;jgeless_eq(6假设DIDX,转到below.eq执行。cmpdi,dx;cmpdxzdijbebelow_eq;jaebelow_eq习题2.23)有一个首地址为array的20个字的数组,说明以下程序段的功能。movex,20movaxz0movsi,axsumjoop:addaxzarraysiadds,2loopsumjoopmovtotalzax解答将首地址为array得20个字的数组求和,并将结果存入total单元

    40、中。习题2.24按照以下要求,编写相应的程序段:(1)起始地址为String的主存单元中存放有一个字符串长度大于6,把该字符串中的第1个和第6个字符字节量传送给DX存放器。(2)从主存buffer开始的4个字节中保存了4个非压缩BCD码,现按低高地址对低高位的原那么,将它们合并到DX中。编写一个程序段,在DX高4位全为O时,使AX=O;否那么使AX=-Ie有两个64位数值,按小端方式存放在两个缓冲区bufferl和buffer2中,编写程序段完成bufferl-buffer2功能。5假设从B800h:0开始存放有100个16位无符号数,编程求它们的和,并把32位的和保存在DX.AX中。(6)字

    41、符串string包含有32KB内容,将其中的$符号替换成空格。(7有一个100个字节元素的数组,其首地址为array,将每个元素减1不考虑溢出存于原处。8统计以$结尾的字符串siting的字符个数。解答(1)解答:movsi,0movdl,stringsi;第1个字符送dl存放器:movdlzstirngOmovsi,5movdh,stringsi;第6个字符送dh存放器:movdlzstirng5解答:xorsi,si;si清零moval,buffersi;第一字节incsimovah,buffersi;第二字节movcl,4shlahzcl;BCD码移到高半字节oral,ah;组合成压缩B

    42、CD码movdl,al;存入dl寄.incsimovalzbuffersi;第三字节incsimovah,buffersi;第四字节movcl,4shlahzcl;BCD码移到高半字节OraLah;组合成压缩BCD码movdh,al;存入dh寄.3解答:testdx,0f000h;testdh,fhjznext;jnznextjmpagainnext:movax,O;movax,Offffhagain:.4解答:movaxzwordptrbufferlsubax,wordptrbuffer2;先减低16位movdxzwordptrbufferl+2sbbdx,wordptrbuffer2+2;

    43、后减高16位,需减低16位的借位(5)解答:movaxz0b800hmovds,ax;段地址orsirsi;地址偏移量si=0ordxzd;和的高字d=0movcxz99;加的次数movaxlsi;第一个数again:incsi;指向下一字单元incsiaddax,si;加下一个数jncnoc;无进位转incdx;有谢立dx=dx+lnoc:decex;次数Tjnzex,again;非0继续加6解答1:不使用串操作指令更好movsi,offsetstringmovcxz8000h;32k=215=8000h= 24hagain:cmpbyteptrsi,$;$jnznext;不要采用jz进行分支movbyteptrsi,;=20hnext:incsiloopagain;decex;jnzagain6解答2:使用串操作指令movdizoffsetstringmoval$movcxz8000hcldagain:scasbjnznextmovbyteptres:di-l,next:loopagain解答1:movsizoffsetarraymovcxz100again:decbyteptrsiincsiloopagain7解答2:xorsi,


    注意事项

    本文(汇编语言程序设计(第四版)第14章【课后答案】.docx)为本站会员(飞猪)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!




    宁ICP备18001539号-1

    三一文库
    收起
    展开