汇编语言与接口技术习题解答

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

习题一解答:1.3(1)[0.0000]原=0.0000[0.0000]反=0.0000[0.0000]补=0.0000(2)[0.1001]原=0.1001[0.1001]反=0.1001[0.1001]补=0.1001(3)[-1001]原=11001[-1001]反=10110[-1001]补=101111.4[N]反=1.0101[N]原=1.1010[N]补=1.0110N=-0.10101.5(1)原码运算:比较可知,正数较大,用正数减负数,结果为正反码运算:01010011-00110011=[01010011]反+[-00110011]反=001010011+[100110011]反=001010011+111001100=000100000补码运算:01010011-00110011=[01010011]补+[-00110011]补=001010011+[100110011]补=001010011+111001101=000100000(2)原码运算:比较可知,负数较大,用负数减正数,结果为负反码运算:0.100100-0.110010=0.100100+[1.110010]反=0.100100+1.001101=1.110001补码运算:0.100100-0.110010=0.100100+[1.110010]补=0.100100+1.001110=1.1100101.6(1)(11011011)2=(219)10=(001000011001)BCD(2)(456)10=(010001010110)BCD(3)(174)8=(124)10=(000100100100)BCD(4)(2DA)16=(730)10=(011100110000)BCD1.7(1)9876H看成有符号数时,默认为负数的补码,转换为十进制数是:-26506(2)9876H看成无符号数时,转换为十进制数是:390301.8(1)98的压缩BCD码为:10011000B(2)98的非压缩BCD码为:0000100100001000B1.9(1)[S1+S2]补=[S1]补+[S2]补=00010110+00100001=00110111,无溢出[S1-S2]补=[S1]补+[-S2]补=00010110+11011111=11110101,无溢出(2)[S1+S2]补=[S1]补+[S2]补=00010110+11011111=11110101,无溢出[S1-S2]补=[S1]补+[-S2]补=00010110+00100001=00110111,无溢出(3)[S1+S2]补=[S1]补+[S2]补=01100100+00011110=10000010,有溢出[S1-S2]补=[S1]补+[-S2]补=01100100+11100010=01000110,无溢出(4)[S1+S2]补=[S1]补+[S2]补=10011100+11100010=01111110,有溢出[S1-S2]补=[S1]补+[-S2]补=10011100+00011110=10111010,无溢出习题二解答:2.1答:8086有哪些寄存器组?各有什么用途?①通用寄存器AX、BX、CX、DX它既可用作16位寄存器,又可将它拆成高、低8位,分别作为两个独立的8位寄存器使用。AX称累加器。常用于存放算术逻辑运算中的操作数,所有I/O指令都使用累加器与外设接口传送数据;BX称基址寄存器。常用来存放访问内存时的基地址或用作间接寻址时的地址寄存器。CX称计数寄存器。在循环和串操作指令中用作计数器,指令执行后CX寄存器中的内容会自动改变。DX称数据寄存器。在I/O指令中用来存放端口的地址,在乘除指令中用作辅助寄存器。②4个专用寄存器SP堆栈指针寄存器。它在堆栈中存放栈顶偏移指针,;BP基址指针寄存器。一般也用来存放访问内存时的基地址;SI源变址寄存器,DI目的变址寄存器。它们常常用在变址寻址方式中。③4个段寄存器CS代码段寄存器。存放当前程序所在段的段基址;DS数据段寄存器。存放当前程序所用数据段的段基址;SS堆栈段寄存器。存放当前程序所用堆栈段的段基址,ES附加段寄存器。存放当前程序所用辅助数据段的段基址。④指令指针寄存器IP16位的指令指针寄存器IP用于存放下一条执行指令的偏移地址。⑤标志寄存器FR它是16位寄存器,但只使用其中的9位,这9位包括6个状态标志位和3个控制标志位。状态标志记录了前面算术逻辑运算结果的一些特征;控制标志是用户自己通过指令设置的,设置后将对其后的操作产生控制作用。2.2答:8086流水线技术是利用8086内部指令队列,使8086/8088的执行部件和总线接口部件并行工作。其工作过程如下:当8086的指令队列中有两个空字节,或者8088的指令队列中有一个空字节,总线接口部件就自动执行一次指令周期,从内存中取出后续的指令代码放入队列中。当执行部件需要数据时,总线接口部件根据执行部件给出的地址,从指定的内存单元或外设中取出数据供执行部件使用。当运算结束时,总线接口部件将运算结果送入指定的内存单元或外设。当指令队列空时,执行部件等待,直到有指令为止。若总线接口部件正在取指令,执行部件此时正好发出访问总线的请求,则必须等总线接口部件取指令完毕后,该请求才能得到响应。一般情况下,程序按顺序执行,但当遇到跳转指令时,总线接口部件就使指令队列复位,从新地址取出指令,并立即传给执行部件去执行。所以,8086流水线技术减少了CPU为取指令而等待的时间,提高了CPU的利用率,加快了整机的运行速度,也降低了对存储器存取速度的要求。2.3答:为了尽可能使8086/8088CPU适应各种使用场合,8086/8088CPU通常有两种工作模式:最大工作模式和最小工作模式。最小工作模式,就是在系统中只有8086或者8088一个微处理器。在这种系统中,所有的控制信号直接由8086或8088产生,因此,系统中的总线控制逻辑电路被减到最少。最大工作模式,是相对最小工作模式而言。在此工作模式系统中,一般包含两个或两个以上微处理器,但是主处理器只有一个,其他的处理器均为协处理器,协助主处理器工作。2.4答:逻辑地址是由段基址和偏移地址两部分构成,通常由编程人员在指令中使用。8086系统中任何一个存储单元对应20位的物理地址,都是由逻辑地址转换得来的。8086存储器中的物理地址是由内部总线接口部件BIU——地址加法器产生。由地址加法器把16位段寄存器的内容转换为20位物理地址,即段基址左移4位后,再加上有效偏移量地址。物理地址=CS×4+IP=40000H+2200H=42200H2.5答:8086CPU为了能够对存储器进行字节和字的访问,在技术上将1M字节的存储器空间分成两个512K字节(219)的存储体。一个存储体中包含偶数地址,该存储体被称为偶存储体;另一个存储体中包含奇数地址,该存储体被称为奇存储体,两个存储体之间采用交叉编址方式,然后通过A0和BHE组合就可以确定对哪一组存储体进行访问,是对字节还是对字进行访问。2.6答:在存储器中,对要存放的字,其低位字节可以从奇数地址开始存放,也可以从偶数地址中开始存放;如果从奇数地址开始存放称为非规则存放,按非规则存放的字称为字不对准存放。从偶数地址中开始存放称为规则存放,按规则存放的字称为字对准存放。使用字对准存放要在一个总线周期完成,用字不对准存放则需要两个总线周期才能完成。所以为了加快程序运行速度,编程时应尽可能使用字对准存放。习题三解答:3.6答:(1)MOVCX,BX(2)MOVAX,1234H(3)MOVAX,wordptr[20H](4)MOVbyteptr[BX],20H3.7答:(1)EA=3000H(2)EA=1200H(3)EA=3300H(4)EA=4200H(5)EA=4500H3.8答:(1)立即数寻址(2)直接寻址(3)寄存器间接寻址(4)基址变址寻址(5)相对基址变址寻址(6)寄存器寻址3.9答:(1)段内间接寻址(2)段内间接寻址(3)段间间接寻址3.10答:(1)直接寻址PA=10200H(2)寄存间接寻址PA=10010H(3)跨段寄存器间接寻址PA=15010H(4)跨段寄存器间接寻址PA=20010H(5)寄存器间接寻址PA=200A0H(6)寄存器相对址寻址PA=0110H(7)基址变址寻址PA=10110H(8)相对基址变址寻址PA=10210H(9)寄存器间接寻址PA=10100H3.12答:解:(1)AX=0100H(2)AX=1020H(3)AX=1020H(4)AX=5030H(5)AX=2010H(6)AX=2010H(7)AX=1020H3.13答:(1)SI=0320H(2)BP=1320H(3)DI=0310H(4)X=0FFF0H3.15答:(1)测试AL中1、3、5位是否均为“1”(2)对32位数(高位在DX,低位在AX)求补码3.16答:(1)XORAL,2AH(2)MOVBL,ALNOTBLTESTBL,2AHJEL1MOVAL,0..L1:MOVAL,1(3)MOVCL,4ROLAL,CLROLBL,CLXCHGAL,BL(4)PUSHFPOPAX(5)PUSHFPOPAXANDAX,0FEFFHPUSHAXPOPF(6)略(7)STDMOVAX,DSMOVES,AXMOVSI,0163HMOVDI,01B3HMOVCX,100REPMOVSB(8)MOVAL,AIMULBMOVC,ALMOVC+1,AH习题四解答:4.4答:01H02H03H04H31H32H33H34H0001H0002H0003H0004H00001234H4.5答:(1)STR1的偏移地址为:100H(2)NUM为10(3)STR2+3的存储单元内容为79H(即第四个字符’O’所对应的ASIC码)4.6答:分别为:3CH,1EH,0FH4.9答:(1)(AX)=1234H(2)(AX)=5678H(3)(AX)=5678H4.10答:DATASEGMENTARRAYEQUTHISWORDARRAYDB100DUP(?)DATAENDS4.11答:(1)ARRAYDB12H,34H,56H,0ABH(2)DARRAYDW1234H,5678H,0ABCDH(3)BCDDW1234(4)STRDB‘STRING’(5)DATA1SEGMENTDB12H,34H,‘A’,‘B’,‘C’DW1234H,5678H,0ABCDHDB5DUP(?)DATA1ENDS4.14答:(1)LEABX,DATA1(2)MOVCL,BYTEPTR[DAT2+2](3)MOVBYTEPTR[BUF1+9],11H(4)LEN1=13,LEN2=7(5)MOVCX,DAT2-DAT1lEASI,DAT1LEADI,BUF2MOVAX,DSMOVES,AXCLDREPMOVSB4.15答:LEASI,STRMOVDH,[SI]MOVDL,[SI+6]MOVDH,STRMOVDL,STR+7习题五解答:5.7答:(1)将一字节数据和其补码逻辑乘;(2)AL的内容为:89H,NUM的内容为:10H。5.8答:(1)求DAT的平方,并将结果放到DAT+1中。(2)DAT+1的内容为51H5.9答:(1)将DAT第0、2位清0,1、3、7位置1;(2)程序执行后DAT的内容为DAH。5.12答:(1)对BUF的内容清0,遇到BUF的内容为0FF则停止清0。(2)求BUF中的前10个数,结果放到AL中。(3)求DAT中的前10个数,结果放入BUF。(4)从BLOCK开始的100个字节查找第一个和KEY相等的元素,找到就将结果放到ADDR中,否则DI置0。5.13答:判断DAT如果为0,则将AL放到RES中;如果为正,将DAT的值加1,如果为负,将DAT的值减1,放到RES中。5.14答:(1)求0到9的和,结果放到预留的空间RES中(2)将AX置0(3)求1到99的和结果放到AX中。(4)求两个相邻数的积,结果与前面的数

1 / 15
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功