第1章 数制和码制
1.将下列十进制数分别转换为二进制数
(1)147 (2)4095 (3)0.625 (4)0.15625 解:147=10010011B 4095=111111111111B 0.625=0.101B 0.15625=0.00101B 2. 将下列二进制数分别转换为十进制数
(1)10110.101B (2)10010010.001B (3)11010.1101B 解:
10110.101B=22.625 10010010.001B=146.0625 11010.1101B=26.8125 3.将二进制数转换成十六进制数
(1)10010101B(2)1101001011B(3)1111111111111101B (4)0100000010101B(5)01111111B(6)010000000001B 解:(1)95H(2)34BH(3)FFFDH(4)0815H(5)7FH(6)401H
4.已知a=1011B, b=11001B, c=100110B,按二进制完成下列运算,并用十进制运算检查计算结果:
(1)a+b; (2)c-a-b; (3)a·b; (4)c/b; 解:a=1011B=11, b=11001B=25, c=100110B=38 (1)a+b=100100B=36 (2)c-a-b=10B=2 (3)a·b=100010011B=275 (4)c/b=1……1101B(=13) 5.设机器字长为8位,写出下列各数的原码和补码:
(1)+1010101B (2)-1010101B (3)+1111111B (4)-1111111B (5)+1000000B (6)-1000000B 解:(1)+1010101B 原码01010101B 补码01010101B (2)-1010101B 原码11010101B 补码10101011B (3)+1111111B 原码01111111B 补码01111111B (4)-1111111B 原码11111111B 补码10000001B (5)+1000000B 原码 01000000B 补码01000000B (6)-1000000B 原码 11000000B 补码11000000B
6.已知a=00111000B,b=11000111B,计算下列逻辑运算: (1)a AND b;(2)a OR b;(3)a XOR b;(4)NOT a; 解:(1)00000000B(2)111111111B(3)111111111B(4)11000111B 7.求下列组合BCD数的二进制和十六进制表示形式:(1.14) (1)3251;(2)12907;(3)2006 解:(1)0011 0010 0101 0001B,3251H
(2)0001 0010 1001 0000 0111 B , 12907H (3)0010 0000 0000 0110B , 2006H
8.设下列四组为8位二进制补码表示的十六进制数,计算a+b和a-b,并判定其结果是否溢出:
(1)a=37H,b=57H;(2)a=0B7H,b=0D7H; (3)a=0F7H,b=0D7H;(4)a=37H,b=0C7H。 解:(1)a=37H, b=57H; a+b=8EH; a-b=[-1]E0H=-32
(2)a=0B7H, b=0D7H; a+b=[1]8EH=-114; a-b=[-1]E0H=-32 (3)a=0F7H, b=0D7H; a+b=[1]CEH=-50; a-b=20H=32 (4)a=37H, b=0C7H; a+b=FEH=-2; a-b=[-1]70H=112
1
9.写出“0”到“9”共10个数符的ASCII码。 答:“0”的ASCII码是30H,“1”的ASCII码是31H, “2”的ASCII码是32H,“3”的ASCII码是33H, “4”的ASCII码是34H,“5”的ASCII码是35H, “6”的ASCII码是36H,“7”的ASCII码是37H, “8”的ASCII码是38H,“9”的ASCII码是39H。
10.将下列算式中的十进制数表示成组合BCD码进行运算,并用加6和减6进行修正。
(1)38+42 (2)99+88 解:(1) 38 BCD (2) 99 BCD + 42 BCD +88 BCD 7AH 121H
+ 06H + 66H 80 BCD 187 BCD
第2章 8086CPU结构与功能
1.微处理器内部结构由那几个部分组成?阐述各部分的主要功能?
答:微处理器内部结构主要由算术逻辑运算单元(ALU)、控制器、工作寄存器和I/O控制逻辑组成。算术逻辑运算单元是CPU的核心,它完成所有的运算操作;控制器是CPU的“指挥中心”,只有在它的控制下,CPU才能完成指令的读入、寄存、译码和执行;工作寄存器用于暂时存储寻址信息和计算中间结果;I/O控制逻辑用于处理I/O操作。
2.为什么地址总线是单向的,而数据总线是双向的?
答:由于在计算机中地址总是由CPU产生的,因此地址总线是单向的。而数据可从CPU写到存储器,也可从存储器读到CPU,因此数据总线是双向的。 3.8086/8088微处理器内部有哪些寄存器?其主要作用是什么?(2.4)
答:执行部件有8个16位寄存器,AX、BX、CX、DX、SP、BP、DI、SI。AX、BX、CX、DX一般作为通用数据寄存器。SP为堆栈指针存器,BP、DI、SI在间接寻址时作为地址寄存器或变址寄存器。总线接口部件设有段寄存器CS、DS、SS、ES和指令指针寄存器IP。段寄存器存放段地址,与偏移地址共同形成存储器的物理地址。IP的内容为下一条将要执行指令的偏移地址,与CS共同形成下一条指令的物理地址。
4.如果某微处理器有20条地址总线和16条数据总线,问: (1)假定存储器地址空间与I/O地址空间是分开的,则存储器地址空间有多大? (2)数据总线上传送的有符号整数的范围有多大?
解:存储空间为2?1048576?1M字节, 数据总线上传送的有符号整数的范围
20为-32768~+32767。
5.从下列各数中减去4AE0H,求出其结果及标志位CF、AF、SF、ZF、OF和PF的值:
(1)1234H (2)5D90H (3)9090H(4)EA04H 解:
(1)1234H-4AE0H=C754H;CF=1,AF=0,SF=1,ZF=0,OF=0,PF=0
2
(2)5D90H -4AE0H=12B0H;CF=0,AF=0,SF=0,ZF=0,OF=0,PF=0
(3)9090H-4AE0H=45B0H;CF=0,AF=0,SF=0,ZF=0,OF=0,PF=0
(4)EA04H-4AE0H=9F24H;CF=0,AF=0,SF=1,ZF=0,OF=0,PF=1
6.什么是逻辑地址?什么是物理地址?它们之间的关系如何?
答:在逻辑空间中每条指令的地址和指令中要访问的操作数地址统称为逻辑地址。内存是由若干个存储单元组成的,每个存储单元有一个编号,这种编号可惟一标识一个存储单元,称为内存地址(或物理地址)。
7.写出下列存储器地址的段地址、偏移地址和物理地址: (1)2134:10A0 (2)1FA0:0A1F (3)267A:B876
解:(1)段地址:2134H; 偏移地址:10A0H; 物理地址:223E0H (2)段地址:1FA0H; 偏移地址:0A1F H; 物理地址:2041FH (3)段地址:267A H; 偏移地址:B876H; 物理地址:32016H 8.给定一个数据的有效地址为2359H,并且(DS)=490BH,求该数据的物理地址。 答:4B409H
9.如果在一个程序段开始执行之前,(CS)=OA7F0H,(IP)=2B40H,求该程序段的第一个字的物理地址。 解:物理地址为: 0A7F0H×10H+2B40H=A3330H。 10.IBM PC有哪些寄存器可用来指示存储器的地址? 答:指示存储器地址的寄存器有:SI,DI,BX,BP
11.已知AH=56H,AL=65H,则AX的值是多少?若AX=AX+0202H,则AH和AL的值分别是多少?
答:AX=5665H;AH=58H;AL=67H。
12.在8086CPU中,从逻辑地址计算出物理地址的部件是什么? 答:地址加法器。
13.当8086CPU重启后,指令指针指向的内存单元的物理地址是多少?
答:8086CPU重启后,CS=0FFFFH,IP=0000H,因此指令指针指向的内存单元的物理地址PA=CS×10H+IP = 0FFFF0H。
第3章 8086CPU指令系统
1.写出完成下列要求的变量定义语句: (1) 在变量var1中保持6个字变量:
4512H,4512,-1,100/3,10H,65530;
(2) 在变量var2中保存字符串:?BYTE?,?word?,?WORD?; (3) 在缓冲区buf1中留出100个字节的存储空间;
(4) 在缓冲区buf2中,保存5个字节的55H,再保存10个字节的240,并将
这一过程重复7次;
(5) 在变量var3中保存缓冲区buf1的长度;
(6) 在变量pointer中保存变量var1和缓冲区buf1的偏移地址。 解:(1)var1 DW 4512H,4512,-1,100/3,10H,65530
(2)var2 DB ?BYTE?, ?word?, ?WORD?
(3)buf1 DB 100 DUP(?)
3
(4)buf2 DB 7 DUP(5 DUP(55H), 10 DUP(240)) (5)var3 DB LENGTH buf1 (6)pointer DW var1, var2
2. 指令正误判断,对正确指令写出源和目的操作数的寻址方式,对错误指令指出原因(设VAR1,VAR2为字节变量,L1为标号):(3.3)
答:(1)MOV SI,100 ;指令正确,源:立即数寻址,目的:寄存器寻址 (2)MOV BX,VAR1[SI] ;指令正确,源:寄存器相对寻址,目的:寄存器寻址
(3)MOV AX, [BX] ;指令正确,源:寄存器间接寻址,目的:寄存器寻址
(4)MOV AL, [DX] ;指令错误,DX不能用作为地址寄存器 (5)MOV BP, AL ;指令错误,类型不一致
(6)MOV VAR1, VAR2 ;指令错误,MOV指令不能从存储器到存储器传送
(7)MOV CS, AX ;指令错误,CS不能用作为目的操作数
(8)MOV DS, 0100H ;指令错误,MOV指令不能将立即数传送到段寄存器
(9)MOV [BX][SI], 1 ;指令错误,类型不定
(10)MOV AX, VAR1+VAR2 ;指令错误,MOV指令中不能完成加法运算
(11)ADD AX, LENGTH VAR1 ;指令正确,源:立即数寻址,目的:寄存器寻址
(12)OR BL, TYPE VAR2 ;指令正确,源:立即数寻址,目的:寄存器寻址
(13)SUB [DI], 78H ;指令错误,类型不定
(14)MOVS VAR1, VAR2 ;指令正确,源:隐含寻址,目的:隐含寻址 (15)PUSH 100H ;指令错误,立即数不能直接压入堆栈 (16)POP CS ;指令错误,CS不能用作为目的操作数
(17)XCHG AX, ES ;指令错误,XCHG指令中不能使用段寄存器 (18)MOV DS, CS ;指令错误,MOV指令不能从段寄存器到段寄存器
(19)JMP L1+5 ;指令正确,段内直接转移
(20)DIV AX, 10 ;指令错误,DIV指令格式错误
(21)SHL BL, 2 ;指令错误,移位指令的移位数要么是1,要么是CL (22)MOV AL, 15+23 ;指令正确,源:立即数寻址,目的:寄存器寻址
(23)MUL CX ;指令正确,源:寄存器寻址,目的:隐含寻址 (24)XCHG CL, [SI] ;指令正确,源:寄存器间接寻址,目的:寄存器寻址
(25)ADC CS:[0100], AH ;指令正确,源:寄存器寻址,目的:直接寻址 (26)SBB VAR1-5,154 ;指令正确,源:立即数寻址,目的:直接寻址 3.设(DS)=2000H,(BX)=0100H,(SI)=0002H,(21000)=3412H,(20102)=7856H,(21200)=4C2AH,(21202)=65B7H,求下列指令执行后AX寄存器的内容:(3.6)
4
(1)MOV AX,1200H (2)MOV AX,BX (3)MOV AX,[1200H]
(4)MOV AX,[BX] (5)MOV AX,1100H[BX](6)MOV AX,[BX][SI](7)MOV AX,1100H[BX][SI]
4.执行下列指令后,DX寄存器中的内容是多少? TABLE DW 25,36,-1,-16,10000,13 PYL DW 7 …
MOV BX, OFFSET TABLE ADD BX, PYL MOV DX,[BX]
答:DX寄存器中的内容为10FFH
5.设已用伪指令EQU定义了4个标识符: N1 EQU 2100 N2 EQU 10 N3 EQU 20000 N4 EQU 25000
下列指令是否正确?并说明原因。
(1)ADD AL,N1-N2 (2)MOV AX,N3+N4 (3)SUB BX,N4-N3 (4)SUB AH,N4-N3-N1 (5)ADD,AL,N2 (6)MOV AH,N2*N2
答:(1)ADD AL,N1-N2 ;指令错误,因为N1-N2超出一个字节的范围 (2)MOV AX,N3+N4 ;指令正确 (3)SUB BX,N4-N3 ;指令正确
(4)SUB AH,N4-N3-N1 ;指令错误,因为N4-N3-N1超出一个字节的范围
(5)ADD AL,N2 ; 指令正确 (6)MOV AH,N2*N2 ;指令正确 6.写出完成下列功能的程序段: (1)传送40H到AL寄存器; (2)将AL的内容乘以2; (3)传送16H到AH寄存器
(4)AL的内容加上AH的内容。 计算最后结果(AL)=? 解:(1)MOV AL,40H
(2)SHL AL,1 (3)MOV AH,16H (4)ADD AL,AH 执行后(AL)=96H
7.设(BX)=11001011B,变量VAR的内容为00110010B,求下列指令单独执行后BX的内容: (1)XOR BX,VAR(2)AND BX,VAR(3)OR BX,VAR(4)XOR BX,11110000B(5)AND BX,00001111B(6)TEST BX,1
解:(1)XOR BX,VAR; 执行后(BX)=00F9H (2)AND BX,VAR; 执行后(BX)=0002H
5