(3) 01010101 – 00111110 = 01010101 + 11000010
0,1010101 + 1,1000010 10,0010111 OF=0, 无溢出;
ZF=1,结果各位不为全0; SF=0,结果最高位为0; CF=1,有进位;
(4) 10110011 - 01100010
10110011 – 01100010 = 10110011 + 10011110
1,0110011 + 1,0011110 10,1010001 OF=0, 有溢出;
ZF=1,结果各位不为全0; SF=0,结果最高位为0; CF=1,有进位;
4、在002B0H和002B3H字单元中,分别存放了2个16位字2C53H和1F0EH,试用图表示出它们在存
储器中的存放情况。 (P.120. P.66.)
答:
002B0H 53 2C
002B3H 0E 1F
5、试说明段基址与段基值的不同之处。 ( P.122. P.116.)
答:8086/8088将1M字节的主存空间按需要划分为若干段(segment),每个段都由连续的字节单元
组成,最大长度为64K字节。一个段起始单元的地址,称为段基址(segment base address)20位。8086/8088对段基址是有所限制的,不能起始于任意地址,要求其低4位必须为0(被16整除)。 在1M字节的地址空间中,可作为段基址的共有64K个,可表示如下: 00000H,00010H,00020H,? ,FFFE0H,FFFF0H。
段基址的高16位称为段基值(segment base value)。如: 0000H,0001H,0002H,? ,FFFEH,FFFFH。
6、试说明8086/8088主存储器的逻辑地址由哪两部分组成。 ( P.129. )
答:8086/8088主存储器的逻辑地址由段基值和偏移量两部分组成。 段基值由某个寄存器提供。
偏移量是指存放操作书的存储单元与段其始地址(段基址)之间的字节距离。
7、设某一存储单元的物理地址是34567H,试完成下列不同的逻辑地址表示。 ( P.129. ) 答:
(1)3456H:0007 H (2)3400H:0567H
8、假设某个程序装入主存后,(SS)= 0500H(SP)= 64H,试计算该程序的堆栈栈底字单元的物理地
址。 ( P.126. ) 答: (SS)= 0500H
(SP)= 64H 为堆栈的长度(此时SP指向栈底+2单元) 栈底字单元的物理地址为 05000H+64H-2 =05062H
9、设堆栈段寄存器(SS)= 1E2CH,程序中设置堆栈的长度为100个字节。试计算该程序的堆栈栈底
字单元的物理地址,堆栈指针SP的初始值(即堆栈中没有数据时)和SP初始值指向的物理地址。 ( P.126. ) 答: (SS)=1E2CH
堆栈的长度为100个字节,则堆栈指针SP的初始值:(SP)= 100H SP初始值所指向的物理地址为:1E2C0H +100H =1E3C0H 栈底字单元的物理地址为 1E3C0H – 2=1E3BEH
10、设(SP)= 40H,(BX)= 1234H,(DS)= 5678H,如现有两条压栈指令:
PUSH BX PUSH DS
试问两条指令执行后,图4-46中各单元的数据是多少?(SP)等于多少? ( P.126. ) 答: 主存
00000H
(SP)? 78 3CH 56 3DH 34 3EH 12 3FH
XX 40H XX
FFFFFH
各单元的数据如上图所示,(SP)等于 40H-2H-2H=3CH
11、设(SP)= 60H,则执行下述3条指令后,(SP)的值为多少? PUSH AX
PUSH BS POP CX ( P.126. )
答:(SP)=60H-2H-2H+2H=5EH