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

习题一解答:

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]补=10111 1.4[N]反=1.0101 [N]原=1.1010 [N]补=1.0110 N=-0.1010

1.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.110010

1.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)BCD

1.7(1)9876H看成有符号数时,默认为负数的补码,转换为十进制数是:-26506 (2)9876H看成无符号数时,转换为十进制数是:39030 1.8(1)98的压缩BCD码为:10011000B

(2)98的非压缩BCD码为:0000100100001000B

1.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附加段寄存器。存放当前程序所用辅助数据段的段基址。

④ 指令指针寄存器IP

16位的指令指针寄存器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=42200H

2.5答:8086CPU为了能够对存储器进行字节和字的访问,在技术上将1M字节的存储器空间分成两个512K字节(219)的存储体。一个存储体中包含偶数地址,该存储体被称为偶存储体;另一个存储体中包含奇数地址,该存储体被称为奇存储体,两个存储体之间采用交叉编址方式,然后通过A0 和BHE组合就可以确定对哪一组存储体进行访问,是对字节还是对字进行访问。

2.6答:在存储器中,对要存放的字,其低位字节可以从奇数地址开始存放,也可以从偶数地址中开始存放;如果从奇数地址开始存放称为非规则存放,按非规则存放的字称为字不对准存放。从偶数地址中开始存放称为规则存放,按规则存放的字称为字对准存放。

使用字对准存放要在一个总线周期完成,用字不对准存放则需要两个总线周期才能完成。所以为了加快程序运行速度,编程时应尽可能使用字对准存放。

习题三解答: 3.6答:(1)MOV CX, BX (2)MOV AX, 1234H

(3)MOV AX, word ptr[20H] (4)MOV byte ptr[BX], 20H

3.7答:(1)EA=3000H

(2)EA=1200H (3)EA=3300H (4)EA=4200H (5)EA=4500H

3.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=10100H

3.12答:解:(1)AX=0100H

(2)AX=1020H (3)AX=1020H (4)AX=5030H (5)AX=2010H (6)AX=2010H (7)AX=1020H

3.13答:(1)SI=0320H

(2)BP=1320H (3)DI=0310H (4)X=0FFF0H

3.15答:(1)测试AL中1、3、5位是否均为“1”

(2)对32位数(高位在DX,低位在AX)求补码

3.16答:(1)XOR AL ,2AH

(2)MOV BL ,AL

NOT BL TEST BL, 2AH JE L1 MOV AL ,0 . . L1: MOV AL , 1 (3)MOV CL, 4

ROL AL, CL

ROL BL, CL XCHG AL, BL (4)PUSHF

POP AX (5)PUSHF

POP AX

AND AX,0FEFFH PUSH AX POPF (6)略 (7)STD

MOV AX, DS MOV ES, AX MOV SI, 0163H MOV DI, 01B3H MOV CX, 100 REP MOV SB (8)MOV AL,A

IMUL B

MOV C,AL MOV C+1 ,AH

习题四解答: 4.4答:

01H 02H 03H 04H 31H 32H 33H 34H 0001H 0002H 0003H 0004H 00001234H 4.5答:(1)STR1的偏移地址为: 100H

(2)NUM为 10

(3)STR2+3的存储单元内容为 79H (即第四个字符’O’所对应的ASIC码)

4.6答:分别为:3CH ,1EH,0FH

4.9答:(1)(AX)=1234H (2)(AX)=5678H

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4