微机原理答案

部分习题答案(顾三乐整理编辑版)

第二章 计算机中的数值和编码

将十进制数转换为二进制和十六进制

(1) 129.75=1000 0001.11B=81.CH (2) 218.8125=1101 1010.1101B=DA.DH

(3) 15.625=1111.101B =F.AH (4) 47.15625=10 1111.0010 1B=2F.28 H

将下列二进制数转换为十进制和十六进制

(1) 111010 B=58 =3A H (2) 1011 1100.111B= 188.875= BC.E H

(3) 0.1101 1B=0.84375 =0.D8H (4) 11110.01 B=30.25 =1E.4H

3、完成下列二进制数的加减法运算

(1) 1001.11+100.01=1110.00 (2) 1101010110.1001-01100001.0011=01110101.0110

(3) 00111101+10111011=11111000 (4) 01011101.0110-101101.1011=101111.1011

4、完成下列十六进制数的加减法运算

(1) 745CH +56DFH =D14B H (2) ABF.8H-EF6.AH =9C28.E H

(3) 12AB.F7+3CD.05=1678 .FC H (4) 6F01H -EFD8H =7F29 H

5、计算下列表达式的值

(1) 128.8125+10110101.1011B +1F.2H =101010101.1010B

(2) 287.68-10101010.11H +8E.EH =103.CEH

(3) 18.9+1010.1101B +12.6H -1011.1001=36.525

6、选取字长n 为8位和16位两种情况,求下列十进制数的补码。

(1) X =-33的补码: 1101 1111, [**************]1

(2) Y =+33的补码: 0010 0001, 0000 0000 0010 0001

(3) Z=-128的补码:1000 0000, 1111 1111 1000 0000

(4) N =+127的补码:0111 1111, 0000 0000 0111 1111

(5) A =-65的补码: 1011 1111, 1111 1111 1011 1111

(6) B =+65的补码: 0100 0001, 0000 0000 0100 0001

(7) C =-96的补码: 1010 0000, 1111 1111 1010 0000

(8) D =+96的补码: 0110 0000, 0000 0000 0110 0000

7、写出下列用补码表示的二进制数的真值

(1) [X]补=1000 0000 0000 0000 H X =-1000 0000 0000 0000 H =-32768

(2) [Y]补=0000 0001 0000 0001 H Y =+0000 0001 0000 0001 H =+257

(3) [Z]补=1111 1110 1010 0101 H Z =-0000 0001 0101 1011 H =-347

(4) [A]补=0000 0010 0101 0111 H A =+0000 0010 0101 0111 H=+599

8、设机器字长为8位, 最高位为符号位,试对下列格式进行二进制补码运算,并判断结果是否溢出。

(1) 43+8

∵ [43]补=00101011B ,[8]补=00001000B

∴ [43]补+[8]补=00101011B +00001000B =00110011B =33H

00101011B

+ 00001000B

00110011B

∵ CS =0,CD =0,OF =CS ⊕CD =0⊕0=0

∴ 无溢出

(1) 43+8 33H (无溢出) (2) -52+7 D3 H (无溢出)

(3) 60+90 96 H (溢出) (4) 72-8 40 H (无溢出)

(5) -33+(-37) 0BA H (无溢出) (6) -90+(-70) 60 H

(溢出)

(7) ―9―(―7) FE H (无溢出) (8) 60-90 E2 H (无溢出)

9、 设有变量x =11101111B ,y =11001001B ,z =01110010B ,v =01011010B ,试计算x+y=? ,x+z=? ,y+z=? ,z+v=? ,请问:① 若为无符号数,计算结果是否正确?② 若为带符号补码数,计算结果是否溢出?

x+y = 11101111B+11001001B =10111000B =1B8 H

1110 1111 B

+ 1100 1001B

1011 1000B

① 若为无符号数 ② 若为带符号补码数

∵ CF=1 ∴ 不正确 ∵ CF=1,DF =1 OF =0 ∴ 不溢出

x+y = 0B8 H x+z = 61 H y+z = 3B H z+v = 0CC H

① 不正确 不正确 不正确 正确

② 不溢出 不溢出 不溢出 溢出

第三章 80X86微处理器

1.简述8086/8088CPU 中BIU 和EU 的作用,并说明其并行工作过程。

答: (1) BIU 的作用:计算20位的物理地址,并负责完成CPU 与存储器或I/O端口之间的数据传送。

(2) EU的作用:执行指令,并为BIU 提供所需的有效地址。

(3) 并行工作过程:当EU 从指令队列中取出指令执行时,BIU 将从内存中取出指令补充到指令队列中。这样就实现了取指和执行指令的并行工作。

2.8086/8088CPU 内部有哪些寄存器? 其主要作用是什么?

答:8086/8088CPU 内部共有14个寄存器,可分为4类:数据寄存器4个,地址寄存器4个,段寄存器4个和控制寄存器2个。其主要作用是:

(1) 数据寄存器:一般用来存放数据,但它们各自都有自己的特定用途。 AX(Accumulator)称为累加器。用该寄存器存放运算结果可使指令简化,提高指令的执行速度。此外,所有的I /O 指令都使用该寄存器与外设端口交换信息。

BX(Base)称为基址寄存器。用来存放操作数在内存中数据段内的偏移地址, CX(Counter)称为计数器。在设计循环程序时使用该寄存器存放循环次数,可使程序指令简化,有利于提高程序的运行速度。

DX(Data)称为数据寄存器。在寄存器间接寻址的I /O 指令中存放I /O 端口地址;在做双字长乘除法运算时,DX 与AX 一起存放一个双字长操作数,其中DX 存放高16位数。

(2) 地址寄存器:一般用来存放段内的偏移地址。

SP(Stack Pointer)称为堆栈指针寄存器。在使用堆栈操作指令(PUSH或POP) 对堆栈进行操作时,每执行一次进栈或出栈操作,系统会自动将SP 的内容减2或加2,以使其始终指向栈顶。

BP(Base Pointer)称为基址寄存器。作为通用寄存器,它可以用来存放数据,但更经常更重要的用途是存放操作数在堆栈段内的偏移地址。

SI(Source Index)称为源变址寄存器。SI 存放源串在数据段内的偏移地址。

DI(Destination Index) 称为目的变址寄存器。DI 存放目的串在附加数据段内的偏移地址。

(3) 段寄存器:用于存放段地址

CS(Code Segment)称为代码段寄存器,用来存储程序当前使用的代码段的段地址。 CS 的内容左移4位再加上指令指针寄存器IP 的内容就是下一条要读取的指令在存储器中的物理地址。

DS(Data Segment)称为数据段寄存器,用来存放程序当前使用的数据段的段地址。 DS 的内容左移4位再加上按指令中存储器寻址方式给出的偏移地址即得到对数据段指定单元进行读写的物理地址。

SS(Stack Segment) 称为堆栈段寄存器,用来存放程序当前所使用的堆栈段的段地址。堆栈是存储器中开辟的按“先进后出”原则组织的一个特殊存储区,主要用于调用子程序或执行中断服务程序时保护断点和现场。

ES(Extra Segment)称为附加数据段寄存器,用来存放程序当前使用的附加数据段的段地址。附加数据段用来存放字符串操作时的目的字符串。

(4) 控制寄存器

IP(Instmcdon Pointer)称为指令指针寄存器,用来存放下一条要读取的指令在代码段内的偏移地址。用户程序不能直接访问IP 。

FLAGS 称为标志寄存器,它是一个16位的寄存器,但只用了其中9位,这9位包括(个状态标志位和3个控制标志位。它用来反映算术运算和逻辑运算结果的一些特征,或用来控制CPU 的某种操作。

3.8086/8088CPU 中有哪些寄存器可用来指示操作数在存储器中某段内的偏移地址? 答:可用来指示段内偏移地址的寄存器共有6个:IP 、SP 、BP 、BX 、SI 、DI

4.8086/8088CPU 中标志寄存器FLAGS 有哪些标志位? 它们的含义和作用如何?

答:标志寄存器中的标志共有9个,分为两类:状态标志6个和控制标志3个。其作用

是:

(1) 状态标志:用来反映算术和逻辑运算结果的一些特征。

CF(Carry Flag) —进位标志位。当进行加减运算时,若最高位发生进位或借位,则CF 为1,否则为0。该标志位通常用于判断无符号数运算结果是否超出了计算机所能表示的无符号数的范围。

PF(Parity Flag)—奇偶标志位。当指令执行结果的低8位中含有偶数个1时,PF 为1,否则为0。

AF(Auxiliary Flag)—辅助进位标志位。当执行一条加法或减法运算指令时,若结果的低字节的低4位向高4位有进位或借位,则AF 为1,否则为0。

ZF(Zero Flag)—零标志位。若当前的运算结果为0,则ZF 为1,否则为00

SF(Sign Flag)—符号标志位。当运算结果的最高位为1时,SF=1,否则为00

OF(Overflow Flag) —溢出标志位。当运算结果超出了带符号数所能表示的数值范围,即溢出时,OF=1,否则为0。该标志位通常用来判断带符号数运算结果是否溢出o

(2) 控制标志位:用来控制CPU 的操作,由程序设置或清除。它们是:

TF(TrapFlag)—跟踪(陷阱) 标志位。它是为测试程序的方便而设置的。若将TF 置1,8086/8088CPU 处于单步工作方式,否则,将正常执行程序。

IP(Interrupt Flag) —中断允许标志位。它是用来控制可屏蔽中断的控制标志位。若用STI 指令将IF 置1,表示允许CPU 接受外部从INTR 引脚上发来的可屏蔽中断请求信号;若用CLI 指令将IP 清0,则禁止CPU 接受可屏蔽中断请求信号。IF 的状态对非屏蔽中断及内部中断没有影响。

DF(DirectionFlag)—方向标志位。若用STD 将DF 置1,串操作按减地址方式进行,也就是说,从高地址开始,每操作一次地址自动递减;若用CLD 将DF 清0,则串操作按增地址方式进行,即每操作一次地址自动递增。

5.8086/8088CPU 的地址总线有多少位? 其寻址范围是多少?

答:8086/8088地址总线有20根,寻址范围1MB

6.什么叫指令队列?8086/8088CPU 中指令队列有什么作用? 其长度分别是多少?

答: (1) 指令队列:采用“先进先出”原则,按顺序存放预执行指令的缓冲器称为指令队列。

(2) 指令队列的作用:存放EU 将要执行的指令,使CPU 的取指和执行指令能并行工作。

(3) 指令队列的长度:8086为6个字节,8088为4个字节。

7.Intel8086与8088有何区别?

答:8086与8088的区别有三处:

(1) 外部数据总线位数不同(即地址/数据分时复用引脚条数不同);

8086为16位:AD15~AD0 。

8088为 8位:AD7~AD0 。

(2) 内部指令队列缓冲器长度不同;

8086有6个字节。当指令队列出现2个空字节时,BIU 将取指补充。 8086有4个字节。当指令队列出现1个空字节时,BIU 将取指补充。

(3) 外部某些控制总线定义不同。

① 8086的28号引脚定义为M /IO(S2),8088定义为IO /M(S2)

② 8086的34号引脚定义为BHE /S7,8088定义为SS0/(HIGH)

8.简述8086 CPU使用地址锁存信号ALE 将地址A15~A0与数据D15~D0分开的工作原理。

答:在任何一个总线周期的T1状态,ALE 均为高电平,以表示当前地址/数据复用线上的输出的是地址信息,在ALE 由高变低的下降沿时把地址装入地址锁存器,而在T2、T3和T4状态,ALE 均为低电平,以表示当前地址/数据复用线上的输出的是数据信息,此时通过数据收发器进行传送。

9.什么是逻辑地址? 什么是物理地址? 若已知逻辑地址为BA00:A800,试求物理地址。 答: 逻辑地址:由段地址和偏移地址表示的存储单元地址称为逻辑地址。

物理地址:CPU 对存储器进行访问时实际所使用的20位地址称为物理地址。 若 逻辑地址为BA00H:A800H

则 物理地址=BA00H ×10H +A800H =C4800H

10.简述堆栈指针寄存器SP 的功能及堆栈的操作过程。

答: (1) SP的功能:指示进栈和出栈操作时的偏移地址。

(2) 堆栈的操作过程:进栈时,先将SP -2,再将数据压入堆栈(即先移后入);出栈时,先将数据弹出堆栈,再将SP+2(即先出后移)。

第四章 80X86 指令系统

指出源操作数的寻址方式

⑴ MOV BX,2000H ;立即数寻址 ⑵ MOV BX ,[2000H] ;直接寻址

⑶ MOV BX ,[SI ] ;寄存器间接寻址 ⑷ MOV BX ,[SI+2000H] ;寄存器相对寻址

⑸ MOV [BX+SI],AL ;寄存器寻址 ⑹ ADD AX ,[BX+DI +80] ;基址变址相对寻址

⑺ MUL BL ;寄存器寻址 ⑻ JMP BX ;段内间接寻址

⑼ IN AL ,DX ;端口间接寻址 ⑽ INC WORD PTR [BP+10H] ;寄存器相对寻址

⑾ MOV CL,LENGTH VAR ;立即数寻址 ⑿ MOV BL,OFFSET VAR1 ;立即数寻址

指出下列指令是否正确

(1) MOV DS ,0100H ;错误。源操作数是立即数时,目的操作数不能时段寄存器

(2) MOV BP ,AL ;错误。操作数类型不一致

(3) XCHG AH ,AL ;正确。

(4) OUT 310H ,AL ;错误。端口直接寻址的范围应在0~FFH 之间

(5) MOV BX ,[BX] ;正确。

(6) MOV ES:[BX+DI] ,AX ;正确。

(7) MOV AX ,[SI+DI] ;错误。存储器寻址中有效地址不能由两个变址寄存器组成

(8) MOV SS:[BX+SI+100H],BX ;正确。

(9) AND AX,BL ;错误。操作数类型不一致

(10) MOV DX ,DS:[BP] ;正确。

(11) ADD [SI],20H ;错误。用PTR 说明类型

(12) MOV 30H ,AL ;错误。目的操作数不能为立即数

(13) PUSH 2000H ;错误。堆栈指令的操作数不能是立即数

(14) MOV [SI],[2000H] ;错误。两个操作数不能同时为存储器操作数

(15) MOV S I ,AL ;错误。操作数类型不一致

(16) ADD [2000H],20H ;错误。用PTR 说明类型

(17) MOV CS ,AX ;错误。目的操作数不能为代码段寄存器

(18) INC [DI] ;错误。需用PTR 说明类型

(19) OUT BX,AL ;错误。端口间接寻址的寄存器只能是DX 寄存器

(20) SHL BX ,3 ;错误。移位次数大于1时应该用CL 寄存器

(21) XCHG CX ,DS ;错误。交换指令中不能出现段寄存器

(22) POP AL ;错误。堆栈指令的操作数只能是字操作数(即16位操作数)

写出存储器操作数物理地址的计算表达式

(1) MOV AL ,[DI] ;(DS)×10H +(DI)

(2) MOV AX ,[BX+SI] ;(DS)×10H +(BX)+(SI)

(3) MOV 5[BX+DI],AL ;(DS)×10H +(BX)+(DI)+5

(4) ADD AL ,ES:[BX] ;(ES)×10H +(BX)

(5) SUB AX ,[1000H] ;(DS)×10H +1000H

(6) ADC AX ,[BX+DI+2000H] ;(DS)×10H +(BX)+(DI)+2000H

(7) MOV CX ,[BP+SI] ;(SS)×10H +(BP)+(SI)

(8) INC BYTE PTR [DI] ;(DS)×10H +(DI)

若(DS)=3000H ,(BX)=2000H ,(SI)=0100H ,(ES)=4000H ,计算下列存储器操作数的物理地址。

(1) (DS)×10H +(BX)=3000H ×10H +2000H =32000H

(2) (DS)×10H +(BX)+(SI)+1000H =3000H ×10H +2000H +0100H +1000H =33100 H

(3) (DS)×10H +(BX)+(SI)=3000H ×10H +2000H +0100H =32100 H

(4) (ES)×10H +(BX)=4000H ×10H +2000H =42000 H

5、若(CS)=E000H ,说明代码段可寻址物理存储空间的范围。

∵ 最小物理地址为:(CS)×10H +0000H =E0000H

最大物理地址为:(CS)×10H +FFFFH =EFFFFH

∴ 代码段可寻址物理存储空间的范围是:E0000H ~EFFFFH

6、设(SP)=2000H ,(AX)=3000H , (BX)=5000H ,执行下列程序段后,(SP)=? ,(AX)=? ,

(BX)=?

PUSH AX

PUSH BX

POP AX

(SP)=1FFEH ,(AX)=5000H , (BX)=5000H

7、试比较SUB AL,09H 与CMP AL,09H 这两条指令的异同。若(AL)=08H,分别执行上述两条指令后,(AL)=?,CF=?,OF=0,ZF=?

(1) 相同点:两条指令都能完成(AL)-09H 的功能,并且都影响六个状态标志位; 不同点:SUB 指令将运算结果回送到AL 寄存器中,而CMP 指令不回送。

(2) SUB AL,09H ;(AL)=FFH,CF=1,OF=0,ZF=0

CMP AL,09H ;(AL)=08H,CF=1,OF=0,ZF=0

8、分别执行下列指令,试求AL 的内容及各状态标志位的状态。

(1) MOV AL ,19H ;

ADD AL ,61H ;(AL)=7AH OF=0 SF=0 ZF=0 AF=0 PF=0 CF=0

(2) MOV AL ,19H ;

SUB AL ,61H ;(AL)=B8H OF=0 SF=1 ZF=0 AF=0 PF=1 CF=1

(3) MOV AL ,5DH ;

ADD AL ,0C6H ;(AL)=23H OF=0 SF=0 ZF=0 AF=1 PF=0 CF=1

(4) MOV AL ,7EH ;

SUB AL ,95H ;(AL)=E9H OF=1 SF=1 ZF=0 AF=0 PF=0 CF=1

9、用最少的指令,实现下述要求的功能。

(1) AH 的高4位清零。 AND AH ,0FH

(2) AL的高4位去反。 XOR AH, 0F0H

(3) AL的高4位移到低4位,高4位清0。 MOV CL ,4

SHR AL ,CL

(4) AL 的低4位移到高4位,低4位清0。 MOV CL ,4

SHL AL ,CL

10、设(BX)=6D16H ,(AX)=1100H ,写出下列三条指令执行后,AX 和BX 寄存器中的内容。

MOV CL ,06H

ROL AX ,CL

SHR BX ,CL (AX)=4004 H (BX)=01B4 H

11、设初值(AX)=0119H ,执行下列程序段后,(AX)=?

MOV CH ,AH

ADD AL ,AH

DAA

XCHG AL ,CH

ADC AL ,34H

DAA

MOV AH ,AL

MOV AL ,CH (AX)=3520 H

12、指出下列程序段的功能。

(1) MOV CX ,10

LEA SI ,First

LEA DI ,Second

REP MOVSB 将 First 串中前10个字符传送至Second 中

(2) CLD

LEA DI ,[0404H]

MOV CX ,0080H

XOR AX ,AX

REP STOSW 将起始地址为0404 H开始的80 H个单元置成0

13、 设(BX)=6F30H ,(BP)=0200H ,(SI)=0046H ,(SS)=2F00H ,(2F246H)=4154H ,试求执行XCHG BX ,[BP+SI]后, (BX)=? ,(2F246H)=?

(BX)=4154H (2F246H)=6F30H

14、设(BX)=0400H ,(DI)=003CH ,执行LEA BX ,[BX+DI +0F62H]后,(BX)=? (BX)=139E H

15、设(DS)=C000H ,(C0010H)=0180H ,(C0012H)=2000H ,执行LDS SI ,[10H]后,(SI)=?, (DS)=?

(SI)=0180 H,(DS)=2000 H

16、已知(DS)=091DH ,(SS)=1E4AH ,(AX)=1234H ,(BX)=0024H ,(CX)=5678H ,(BP)=0024H ,(SI)=0012H ,(DI)=0032H ,(09226H)=00F6H ,(09228H)=1E40H ,试求单独执行下列指令后的结果。

(1) MOV CL ,20H[BX][SI] ;(CL)=0F6 H

(2) MOV [BP][DI],CX ;(1E4F6 H)=5678 H

(3) LEA BX ,20H[BX][SI] ;(BX)=0056 H

MOV AX,2[BX] ;(AX)=1E40 H

(4) LDS SI,[BP][DI] ;

MOV [SI],BX ;((SI))=0024 H

(5) XCHG CX ,32H[BX] ;

XCHG 20H[BX][SI],AX ;(AX)=5678 H ,(09226H)=1234 H

17、若CPU 中各寄存器及RAM 参数如图所示,试求独立执行如下指令后,CPU 及RAM 相应寄存器及存储单元的内容是多少?

CPU R AM 执行前 执行后

CS 3000H FFFFH CX 20506H 06H 不变

DS 2050H 0004H BX 20507H 00H 不变

SS 50A0H 1000H SP 20508H 87H 不变

ES 0FFFH 17C6H DX 20509H 15H 不变

IP 0000H 8094H AX 2050AH 37H 94H

DI 000AH 1403H BP 2050BH C5H 不变

SI 0008H 1 CF 2050CH 2FH 不变

(1)MOV DX ,[BX+2] ;(DX )=0006H,(BX )=0004H

(2)PUSH CX ;(SP )=0FFEH

(3)MOV CX ,BX ;(CX )=0004H,(BX )=0004H

(4)TEST AX ,01 ;(AX )=8094H,(CF )=0

(5)MOV AL ,[SI] ;(AL )=87H

(6)ADC AL ,[DI] ;(AL )=0CCH,(CF )=0

DAA ;(AL )=32H

(7)INC SI ;(SI )=0009H

(8)DEC DI ;(DI )=0009H

(9)MOV [DI],AL ;((DI ))=94H

(10)XCHG AX ,DX ;(AX )=17C6H,(DX )=8094H

(11)XOR AH ,BL ;(AH )=84H,(BL )=04H

(12)JMP DX ;(IP )=17C6H

18、(DS)=2000H ,(BX)=1256H ,(SI)=528FH ,偏移量=20A1H ,(232F7H)=3280H ,(264E5H)=2450H ,试求执行下述指令后的结果。

(1) JMP BX ;(IP)=1256 H

(2) JMP TABLE[BX] ;(IP)=3280 H

(3) JMP [BX][SI] ;(IP)=2450 H

19、设(IP)=3D8FH ,(CS)=4050H ,(SP)=0F17H ,当执行CALL 2000H:0094H后,试指出(IP)、(CS)、(SP)、((SP))、((SP)+1) 、((SP)+2) 和((SP)+3) 的内容。

CALL 指令是5字节指令,下一条指令地址为4050H :3D94H

所以执行后

(IP)=0094H ,(CS)=2000H 、(SP)=0F13H

((SP))=94H ,((SP)+1) =00H ,((SP)+2) =00H ,((SP)+3) =20H

第五章 汇编语言程序设计

2.PLENTH 的值为0022,它表示当前已分配单元空间;

3.L 的值为6;

5. (AX )=000AH;(BL )=0AH;(CL )=01H;

10.

MOV AX, 4A82H

MOV DL ,AH

AND DL ,0F0H

MOV CL ,4

SHR DL ,CL

PUSH AX

AND AH ,0FH

MOV BH ,AH

AND AL ,0F0H

MOV BL ,AL

MOV CL ,4

SHR BL ,CL

MOV CL ,BH

POP AX

AND AL ,0FH

11. data segment

string1 db 'I am a student.' string2 db 'I am a student .' yes db 'match',0dh,0ah,'$' no db 'no match',0dh,0ah,'$' data ends

code segment

assume cs:code,ds:data,es:data start: push ds

sub ax,ax

push ax

mov ax,data

mov ds,ax

mov es,ax

lea si,string1

lea di,string2

mov cx,string2-string1 cld

repe cmpsb

jnz dispno

mov ah,9

lea dx,yes

int 21h

jmp exit

dispno: mov ah,9

lea dx,no

int 21h

exit: MOV AH,4CH

INT 21H

code ends

13. DATA SEGMENT

M DB 11H,22H,33H,44H,64H,87H,34,29,67H,88H,0F6H

DB 43H,0B7H,96H,0A3H,233,56H,23H,56H,89H

C EQU 20

P DB 20 DUP(?)

N DB 20 DUP(?)

PLUS DB 'PLUS',0DH,0AH,'$'

MINUS DB 'MINUS',0DH,0AH,'$'

J DB 2 DUP(?)

DA TA ENDS

CODE SEGMENT

ASSUME CS:CODE, DS:DATA

START: MOV AX,DA TA

MOV DS,AX

LEA SI,M

LEA DI,P

LEA BX,N

MOV CX,C

MOV DX,0

LOOP1: LODSB

TEST AL,80H

JNZ MINUS1 ;负数转移

MOV [DI],AL

INC DI

INC DH ;存正数个数

JMP AGAIN

MINUS1: MOV [BX],AL

INC BX

INC DL ; 存负数个数

AGAIN: DEC CX

JNZ LOOP1

MOV WORD PTR J,DX ; 存结果

MOV DX,OFFSET MINUS

MOV AH,9

INT 21H ; 显示提示信息

MOV BL,J

MOV CH,2

ROTA TE: MOV CL,4

ROL BL,CL

MOV AL,BL

AND AL,0FH

ADD AL,30H

CMP AL,3AH

JL POR

ADD AL,7

POR: MOV DL,AL

MOV AH,2

INT 21H

DEC CH

JNZ ROTA TE ; 十六进制形式输出负数个数

MOV AH,2

MOV DL,0DH

INT 21H

MOV DL,0AH

INT 21H

MOV DX,OFFSET PLUS

MOV AH,9

INT 21H

MOV DH,J+1

MOV CH,2

ROTA TE1: MOV CL,4

ROL DH,CL

MOV AL,DH

AND AL,0FH

ADD AL,30H

CMP AL,3AH

JL POR1

ADD AL,7

POR1: MOV DL,AL

MOV AH,2

INT 21H

DEC CH

JNZ ROTA TE1

MOV AH,4CH

INT 21H

CODE ENDS

END START

第六章 半导体存储器

2、 (1) 64片 片内寻址线 10根,片间寻址线 6根

(2) 128片 片内寻址线 11根,片间寻址线 5根

(3) 16片 片内寻址线 11根,片间寻址线 5根

(4) 2片 片内寻址线 14根,片间寻址线 2根

3、1024×8的RAM 芯片,地址线11根。数据线8根

6、已知:8位微机地址,总线16位,设计12KB 存储系统,其中ROM 占用0000H 开始的8KB ,RAM 占用2000H 开始的4KB ,存储芯片分别选用INTEL 2716和2114

分析如下:(1)ROM 2716 2K ×8芯片,需4片,做字扩展,片内寻址线11根 RAM 2114 1K ×4芯片,需8片,做字位扩展,片内寻址线10根

(2)地址范围: A15 A14 A13 A12 A11 A10 ROM1:0000H~07FFH 0 0 0 0 0 0

ROM2:0800H~0FFFH 0 0 0 0 1 0

A15 A14 A13 A12 A11 A10

ROM3:1000H~17FFH 0 0 0 1 0 0

ROM4:1800H~1FFFH 0 0 0 1 1 0

RAM1、2:2000H~23FFH 0 0 1 0 0 0

RAM3、4:2400H~27FFH 0 0 1 0 0 1

RAM5、6:2800H~2BFFH 0 0 1 0 1 0

RAM7、8:2C00H~2FFFH 0 0 1 0 1 1

(3)A11、A12、A13 3:8译码器 译码输入 (一级译码)

ROM1 :Y0

ROM2 :Y1

ROM3 :Y2

ROM4 :Y3

RAM1、2 :Y4 与 A10 (二级译码)

RAM3、4 :Y4 与 A10

RAM5、6 :Y5 与 A10

RAM7、8 :Y5 与 A10

(4)画图连接 略

9、8088组成的小型计算机系统,32KB ROM, 其地址范围00000~07FFFH, RAM 占用8KB, 地址范围:08000H~09FFFH。ROM 选用 2764(8K ×8),RAM 选用2114(1K ×4) 分析如下 (1) ROM 2764 8K ×8芯片,需4片,做字扩展,片内寻址线13根 RAM 2114 1K ×4芯片,需16片,做字位扩展,片内寻址线10根

(2) 地址范围: A15 A14 A13 A12 A11 A10

ROM1 00000~01FFF H 0 0 0 (一级译码) ROM2 02000~03FFF H 0 0 1

ROM3 04000~05FFF H 0 1 0

ROM4 06000~07FFFH 0 1 1

RAM1(组)08000~083FFH 1 0 0 0 0 0 (二级译码) RAM2 08400~087FFH 1 0 0 0 0 1

RAM3 08800~08BFFH 1 0 0 0 1 0

RAM4 08C00~08FFFH 1 0 0 0 1 1

RAM5 09000~093FFH 1 0 0 1 0 0

RAM6 09400~09FFFH 1 0 0 1 0 1

RAM7 09800~09BFFH 1 0 0 1 1 0

RAM8 09C00~09FFFH 1 0 0 1 1 1

(3) ROM1 Y0 (1 # 译码器 A15 A14 A13 译码输入)

ROM2 Y1

ROM3 Y2

ROM4 Y3

RAM1 Y0 (2 # 译码器 A12 A11 A10译码输入 1 # Y4做2#的控制信号) RAM2 Y1

RAM3 Y2

RAM4 Y3

RAM5 Y4

RAM6 Y5

RAM7 Y6

RAM8 Y7

(4) 需两片3:8译码器

画图连接 略

第七章 输入 / 输出 与 中断

15、01D8 H

16、接通打印机→ 检查打印状态→ 发送数据

OR AL,01 H

OUT 0F7H , AL

IN AL ,0F6 H

OUT 0F5H , AL

第八章 可编程接口芯片及应用

初始化命令字 及 计数初值

CUNT0 36H 或37H 1000

CUNT1 54H 或55H 100

始化控制字

(1)99H (2) B6 H PC2及PC4 置位命令字

09 H 05 H

部分习题答案(顾三乐整理编辑版)

第二章 计算机中的数值和编码

将十进制数转换为二进制和十六进制

(1) 129.75=1000 0001.11B=81.CH (2) 218.8125=1101 1010.1101B=DA.DH

(3) 15.625=1111.101B =F.AH (4) 47.15625=10 1111.0010 1B=2F.28 H

将下列二进制数转换为十进制和十六进制

(1) 111010 B=58 =3A H (2) 1011 1100.111B= 188.875= BC.E H

(3) 0.1101 1B=0.84375 =0.D8H (4) 11110.01 B=30.25 =1E.4H

3、完成下列二进制数的加减法运算

(1) 1001.11+100.01=1110.00 (2) 1101010110.1001-01100001.0011=01110101.0110

(3) 00111101+10111011=11111000 (4) 01011101.0110-101101.1011=101111.1011

4、完成下列十六进制数的加减法运算

(1) 745CH +56DFH =D14B H (2) ABF.8H-EF6.AH =9C28.E H

(3) 12AB.F7+3CD.05=1678 .FC H (4) 6F01H -EFD8H =7F29 H

5、计算下列表达式的值

(1) 128.8125+10110101.1011B +1F.2H =101010101.1010B

(2) 287.68-10101010.11H +8E.EH =103.CEH

(3) 18.9+1010.1101B +12.6H -1011.1001=36.525

6、选取字长n 为8位和16位两种情况,求下列十进制数的补码。

(1) X =-33的补码: 1101 1111, [**************]1

(2) Y =+33的补码: 0010 0001, 0000 0000 0010 0001

(3) Z=-128的补码:1000 0000, 1111 1111 1000 0000

(4) N =+127的补码:0111 1111, 0000 0000 0111 1111

(5) A =-65的补码: 1011 1111, 1111 1111 1011 1111

(6) B =+65的补码: 0100 0001, 0000 0000 0100 0001

(7) C =-96的补码: 1010 0000, 1111 1111 1010 0000

(8) D =+96的补码: 0110 0000, 0000 0000 0110 0000

7、写出下列用补码表示的二进制数的真值

(1) [X]补=1000 0000 0000 0000 H X =-1000 0000 0000 0000 H =-32768

(2) [Y]补=0000 0001 0000 0001 H Y =+0000 0001 0000 0001 H =+257

(3) [Z]补=1111 1110 1010 0101 H Z =-0000 0001 0101 1011 H =-347

(4) [A]补=0000 0010 0101 0111 H A =+0000 0010 0101 0111 H=+599

8、设机器字长为8位, 最高位为符号位,试对下列格式进行二进制补码运算,并判断结果是否溢出。

(1) 43+8

∵ [43]补=00101011B ,[8]补=00001000B

∴ [43]补+[8]补=00101011B +00001000B =00110011B =33H

00101011B

+ 00001000B

00110011B

∵ CS =0,CD =0,OF =CS ⊕CD =0⊕0=0

∴ 无溢出

(1) 43+8 33H (无溢出) (2) -52+7 D3 H (无溢出)

(3) 60+90 96 H (溢出) (4) 72-8 40 H (无溢出)

(5) -33+(-37) 0BA H (无溢出) (6) -90+(-70) 60 H

(溢出)

(7) ―9―(―7) FE H (无溢出) (8) 60-90 E2 H (无溢出)

9、 设有变量x =11101111B ,y =11001001B ,z =01110010B ,v =01011010B ,试计算x+y=? ,x+z=? ,y+z=? ,z+v=? ,请问:① 若为无符号数,计算结果是否正确?② 若为带符号补码数,计算结果是否溢出?

x+y = 11101111B+11001001B =10111000B =1B8 H

1110 1111 B

+ 1100 1001B

1011 1000B

① 若为无符号数 ② 若为带符号补码数

∵ CF=1 ∴ 不正确 ∵ CF=1,DF =1 OF =0 ∴ 不溢出

x+y = 0B8 H x+z = 61 H y+z = 3B H z+v = 0CC H

① 不正确 不正确 不正确 正确

② 不溢出 不溢出 不溢出 溢出

第三章 80X86微处理器

1.简述8086/8088CPU 中BIU 和EU 的作用,并说明其并行工作过程。

答: (1) BIU 的作用:计算20位的物理地址,并负责完成CPU 与存储器或I/O端口之间的数据传送。

(2) EU的作用:执行指令,并为BIU 提供所需的有效地址。

(3) 并行工作过程:当EU 从指令队列中取出指令执行时,BIU 将从内存中取出指令补充到指令队列中。这样就实现了取指和执行指令的并行工作。

2.8086/8088CPU 内部有哪些寄存器? 其主要作用是什么?

答:8086/8088CPU 内部共有14个寄存器,可分为4类:数据寄存器4个,地址寄存器4个,段寄存器4个和控制寄存器2个。其主要作用是:

(1) 数据寄存器:一般用来存放数据,但它们各自都有自己的特定用途。 AX(Accumulator)称为累加器。用该寄存器存放运算结果可使指令简化,提高指令的执行速度。此外,所有的I /O 指令都使用该寄存器与外设端口交换信息。

BX(Base)称为基址寄存器。用来存放操作数在内存中数据段内的偏移地址, CX(Counter)称为计数器。在设计循环程序时使用该寄存器存放循环次数,可使程序指令简化,有利于提高程序的运行速度。

DX(Data)称为数据寄存器。在寄存器间接寻址的I /O 指令中存放I /O 端口地址;在做双字长乘除法运算时,DX 与AX 一起存放一个双字长操作数,其中DX 存放高16位数。

(2) 地址寄存器:一般用来存放段内的偏移地址。

SP(Stack Pointer)称为堆栈指针寄存器。在使用堆栈操作指令(PUSH或POP) 对堆栈进行操作时,每执行一次进栈或出栈操作,系统会自动将SP 的内容减2或加2,以使其始终指向栈顶。

BP(Base Pointer)称为基址寄存器。作为通用寄存器,它可以用来存放数据,但更经常更重要的用途是存放操作数在堆栈段内的偏移地址。

SI(Source Index)称为源变址寄存器。SI 存放源串在数据段内的偏移地址。

DI(Destination Index) 称为目的变址寄存器。DI 存放目的串在附加数据段内的偏移地址。

(3) 段寄存器:用于存放段地址

CS(Code Segment)称为代码段寄存器,用来存储程序当前使用的代码段的段地址。 CS 的内容左移4位再加上指令指针寄存器IP 的内容就是下一条要读取的指令在存储器中的物理地址。

DS(Data Segment)称为数据段寄存器,用来存放程序当前使用的数据段的段地址。 DS 的内容左移4位再加上按指令中存储器寻址方式给出的偏移地址即得到对数据段指定单元进行读写的物理地址。

SS(Stack Segment) 称为堆栈段寄存器,用来存放程序当前所使用的堆栈段的段地址。堆栈是存储器中开辟的按“先进后出”原则组织的一个特殊存储区,主要用于调用子程序或执行中断服务程序时保护断点和现场。

ES(Extra Segment)称为附加数据段寄存器,用来存放程序当前使用的附加数据段的段地址。附加数据段用来存放字符串操作时的目的字符串。

(4) 控制寄存器

IP(Instmcdon Pointer)称为指令指针寄存器,用来存放下一条要读取的指令在代码段内的偏移地址。用户程序不能直接访问IP 。

FLAGS 称为标志寄存器,它是一个16位的寄存器,但只用了其中9位,这9位包括(个状态标志位和3个控制标志位。它用来反映算术运算和逻辑运算结果的一些特征,或用来控制CPU 的某种操作。

3.8086/8088CPU 中有哪些寄存器可用来指示操作数在存储器中某段内的偏移地址? 答:可用来指示段内偏移地址的寄存器共有6个:IP 、SP 、BP 、BX 、SI 、DI

4.8086/8088CPU 中标志寄存器FLAGS 有哪些标志位? 它们的含义和作用如何?

答:标志寄存器中的标志共有9个,分为两类:状态标志6个和控制标志3个。其作用

是:

(1) 状态标志:用来反映算术和逻辑运算结果的一些特征。

CF(Carry Flag) —进位标志位。当进行加减运算时,若最高位发生进位或借位,则CF 为1,否则为0。该标志位通常用于判断无符号数运算结果是否超出了计算机所能表示的无符号数的范围。

PF(Parity Flag)—奇偶标志位。当指令执行结果的低8位中含有偶数个1时,PF 为1,否则为0。

AF(Auxiliary Flag)—辅助进位标志位。当执行一条加法或减法运算指令时,若结果的低字节的低4位向高4位有进位或借位,则AF 为1,否则为0。

ZF(Zero Flag)—零标志位。若当前的运算结果为0,则ZF 为1,否则为00

SF(Sign Flag)—符号标志位。当运算结果的最高位为1时,SF=1,否则为00

OF(Overflow Flag) —溢出标志位。当运算结果超出了带符号数所能表示的数值范围,即溢出时,OF=1,否则为0。该标志位通常用来判断带符号数运算结果是否溢出o

(2) 控制标志位:用来控制CPU 的操作,由程序设置或清除。它们是:

TF(TrapFlag)—跟踪(陷阱) 标志位。它是为测试程序的方便而设置的。若将TF 置1,8086/8088CPU 处于单步工作方式,否则,将正常执行程序。

IP(Interrupt Flag) —中断允许标志位。它是用来控制可屏蔽中断的控制标志位。若用STI 指令将IF 置1,表示允许CPU 接受外部从INTR 引脚上发来的可屏蔽中断请求信号;若用CLI 指令将IP 清0,则禁止CPU 接受可屏蔽中断请求信号。IF 的状态对非屏蔽中断及内部中断没有影响。

DF(DirectionFlag)—方向标志位。若用STD 将DF 置1,串操作按减地址方式进行,也就是说,从高地址开始,每操作一次地址自动递减;若用CLD 将DF 清0,则串操作按增地址方式进行,即每操作一次地址自动递增。

5.8086/8088CPU 的地址总线有多少位? 其寻址范围是多少?

答:8086/8088地址总线有20根,寻址范围1MB

6.什么叫指令队列?8086/8088CPU 中指令队列有什么作用? 其长度分别是多少?

答: (1) 指令队列:采用“先进先出”原则,按顺序存放预执行指令的缓冲器称为指令队列。

(2) 指令队列的作用:存放EU 将要执行的指令,使CPU 的取指和执行指令能并行工作。

(3) 指令队列的长度:8086为6个字节,8088为4个字节。

7.Intel8086与8088有何区别?

答:8086与8088的区别有三处:

(1) 外部数据总线位数不同(即地址/数据分时复用引脚条数不同);

8086为16位:AD15~AD0 。

8088为 8位:AD7~AD0 。

(2) 内部指令队列缓冲器长度不同;

8086有6个字节。当指令队列出现2个空字节时,BIU 将取指补充。 8086有4个字节。当指令队列出现1个空字节时,BIU 将取指补充。

(3) 外部某些控制总线定义不同。

① 8086的28号引脚定义为M /IO(S2),8088定义为IO /M(S2)

② 8086的34号引脚定义为BHE /S7,8088定义为SS0/(HIGH)

8.简述8086 CPU使用地址锁存信号ALE 将地址A15~A0与数据D15~D0分开的工作原理。

答:在任何一个总线周期的T1状态,ALE 均为高电平,以表示当前地址/数据复用线上的输出的是地址信息,在ALE 由高变低的下降沿时把地址装入地址锁存器,而在T2、T3和T4状态,ALE 均为低电平,以表示当前地址/数据复用线上的输出的是数据信息,此时通过数据收发器进行传送。

9.什么是逻辑地址? 什么是物理地址? 若已知逻辑地址为BA00:A800,试求物理地址。 答: 逻辑地址:由段地址和偏移地址表示的存储单元地址称为逻辑地址。

物理地址:CPU 对存储器进行访问时实际所使用的20位地址称为物理地址。 若 逻辑地址为BA00H:A800H

则 物理地址=BA00H ×10H +A800H =C4800H

10.简述堆栈指针寄存器SP 的功能及堆栈的操作过程。

答: (1) SP的功能:指示进栈和出栈操作时的偏移地址。

(2) 堆栈的操作过程:进栈时,先将SP -2,再将数据压入堆栈(即先移后入);出栈时,先将数据弹出堆栈,再将SP+2(即先出后移)。

第四章 80X86 指令系统

指出源操作数的寻址方式

⑴ MOV BX,2000H ;立即数寻址 ⑵ MOV BX ,[2000H] ;直接寻址

⑶ MOV BX ,[SI ] ;寄存器间接寻址 ⑷ MOV BX ,[SI+2000H] ;寄存器相对寻址

⑸ MOV [BX+SI],AL ;寄存器寻址 ⑹ ADD AX ,[BX+DI +80] ;基址变址相对寻址

⑺ MUL BL ;寄存器寻址 ⑻ JMP BX ;段内间接寻址

⑼ IN AL ,DX ;端口间接寻址 ⑽ INC WORD PTR [BP+10H] ;寄存器相对寻址

⑾ MOV CL,LENGTH VAR ;立即数寻址 ⑿ MOV BL,OFFSET VAR1 ;立即数寻址

指出下列指令是否正确

(1) MOV DS ,0100H ;错误。源操作数是立即数时,目的操作数不能时段寄存器

(2) MOV BP ,AL ;错误。操作数类型不一致

(3) XCHG AH ,AL ;正确。

(4) OUT 310H ,AL ;错误。端口直接寻址的范围应在0~FFH 之间

(5) MOV BX ,[BX] ;正确。

(6) MOV ES:[BX+DI] ,AX ;正确。

(7) MOV AX ,[SI+DI] ;错误。存储器寻址中有效地址不能由两个变址寄存器组成

(8) MOV SS:[BX+SI+100H],BX ;正确。

(9) AND AX,BL ;错误。操作数类型不一致

(10) MOV DX ,DS:[BP] ;正确。

(11) ADD [SI],20H ;错误。用PTR 说明类型

(12) MOV 30H ,AL ;错误。目的操作数不能为立即数

(13) PUSH 2000H ;错误。堆栈指令的操作数不能是立即数

(14) MOV [SI],[2000H] ;错误。两个操作数不能同时为存储器操作数

(15) MOV S I ,AL ;错误。操作数类型不一致

(16) ADD [2000H],20H ;错误。用PTR 说明类型

(17) MOV CS ,AX ;错误。目的操作数不能为代码段寄存器

(18) INC [DI] ;错误。需用PTR 说明类型

(19) OUT BX,AL ;错误。端口间接寻址的寄存器只能是DX 寄存器

(20) SHL BX ,3 ;错误。移位次数大于1时应该用CL 寄存器

(21) XCHG CX ,DS ;错误。交换指令中不能出现段寄存器

(22) POP AL ;错误。堆栈指令的操作数只能是字操作数(即16位操作数)

写出存储器操作数物理地址的计算表达式

(1) MOV AL ,[DI] ;(DS)×10H +(DI)

(2) MOV AX ,[BX+SI] ;(DS)×10H +(BX)+(SI)

(3) MOV 5[BX+DI],AL ;(DS)×10H +(BX)+(DI)+5

(4) ADD AL ,ES:[BX] ;(ES)×10H +(BX)

(5) SUB AX ,[1000H] ;(DS)×10H +1000H

(6) ADC AX ,[BX+DI+2000H] ;(DS)×10H +(BX)+(DI)+2000H

(7) MOV CX ,[BP+SI] ;(SS)×10H +(BP)+(SI)

(8) INC BYTE PTR [DI] ;(DS)×10H +(DI)

若(DS)=3000H ,(BX)=2000H ,(SI)=0100H ,(ES)=4000H ,计算下列存储器操作数的物理地址。

(1) (DS)×10H +(BX)=3000H ×10H +2000H =32000H

(2) (DS)×10H +(BX)+(SI)+1000H =3000H ×10H +2000H +0100H +1000H =33100 H

(3) (DS)×10H +(BX)+(SI)=3000H ×10H +2000H +0100H =32100 H

(4) (ES)×10H +(BX)=4000H ×10H +2000H =42000 H

5、若(CS)=E000H ,说明代码段可寻址物理存储空间的范围。

∵ 最小物理地址为:(CS)×10H +0000H =E0000H

最大物理地址为:(CS)×10H +FFFFH =EFFFFH

∴ 代码段可寻址物理存储空间的范围是:E0000H ~EFFFFH

6、设(SP)=2000H ,(AX)=3000H , (BX)=5000H ,执行下列程序段后,(SP)=? ,(AX)=? ,

(BX)=?

PUSH AX

PUSH BX

POP AX

(SP)=1FFEH ,(AX)=5000H , (BX)=5000H

7、试比较SUB AL,09H 与CMP AL,09H 这两条指令的异同。若(AL)=08H,分别执行上述两条指令后,(AL)=?,CF=?,OF=0,ZF=?

(1) 相同点:两条指令都能完成(AL)-09H 的功能,并且都影响六个状态标志位; 不同点:SUB 指令将运算结果回送到AL 寄存器中,而CMP 指令不回送。

(2) SUB AL,09H ;(AL)=FFH,CF=1,OF=0,ZF=0

CMP AL,09H ;(AL)=08H,CF=1,OF=0,ZF=0

8、分别执行下列指令,试求AL 的内容及各状态标志位的状态。

(1) MOV AL ,19H ;

ADD AL ,61H ;(AL)=7AH OF=0 SF=0 ZF=0 AF=0 PF=0 CF=0

(2) MOV AL ,19H ;

SUB AL ,61H ;(AL)=B8H OF=0 SF=1 ZF=0 AF=0 PF=1 CF=1

(3) MOV AL ,5DH ;

ADD AL ,0C6H ;(AL)=23H OF=0 SF=0 ZF=0 AF=1 PF=0 CF=1

(4) MOV AL ,7EH ;

SUB AL ,95H ;(AL)=E9H OF=1 SF=1 ZF=0 AF=0 PF=0 CF=1

9、用最少的指令,实现下述要求的功能。

(1) AH 的高4位清零。 AND AH ,0FH

(2) AL的高4位去反。 XOR AH, 0F0H

(3) AL的高4位移到低4位,高4位清0。 MOV CL ,4

SHR AL ,CL

(4) AL 的低4位移到高4位,低4位清0。 MOV CL ,4

SHL AL ,CL

10、设(BX)=6D16H ,(AX)=1100H ,写出下列三条指令执行后,AX 和BX 寄存器中的内容。

MOV CL ,06H

ROL AX ,CL

SHR BX ,CL (AX)=4004 H (BX)=01B4 H

11、设初值(AX)=0119H ,执行下列程序段后,(AX)=?

MOV CH ,AH

ADD AL ,AH

DAA

XCHG AL ,CH

ADC AL ,34H

DAA

MOV AH ,AL

MOV AL ,CH (AX)=3520 H

12、指出下列程序段的功能。

(1) MOV CX ,10

LEA SI ,First

LEA DI ,Second

REP MOVSB 将 First 串中前10个字符传送至Second 中

(2) CLD

LEA DI ,[0404H]

MOV CX ,0080H

XOR AX ,AX

REP STOSW 将起始地址为0404 H开始的80 H个单元置成0

13、 设(BX)=6F30H ,(BP)=0200H ,(SI)=0046H ,(SS)=2F00H ,(2F246H)=4154H ,试求执行XCHG BX ,[BP+SI]后, (BX)=? ,(2F246H)=?

(BX)=4154H (2F246H)=6F30H

14、设(BX)=0400H ,(DI)=003CH ,执行LEA BX ,[BX+DI +0F62H]后,(BX)=? (BX)=139E H

15、设(DS)=C000H ,(C0010H)=0180H ,(C0012H)=2000H ,执行LDS SI ,[10H]后,(SI)=?, (DS)=?

(SI)=0180 H,(DS)=2000 H

16、已知(DS)=091DH ,(SS)=1E4AH ,(AX)=1234H ,(BX)=0024H ,(CX)=5678H ,(BP)=0024H ,(SI)=0012H ,(DI)=0032H ,(09226H)=00F6H ,(09228H)=1E40H ,试求单独执行下列指令后的结果。

(1) MOV CL ,20H[BX][SI] ;(CL)=0F6 H

(2) MOV [BP][DI],CX ;(1E4F6 H)=5678 H

(3) LEA BX ,20H[BX][SI] ;(BX)=0056 H

MOV AX,2[BX] ;(AX)=1E40 H

(4) LDS SI,[BP][DI] ;

MOV [SI],BX ;((SI))=0024 H

(5) XCHG CX ,32H[BX] ;

XCHG 20H[BX][SI],AX ;(AX)=5678 H ,(09226H)=1234 H

17、若CPU 中各寄存器及RAM 参数如图所示,试求独立执行如下指令后,CPU 及RAM 相应寄存器及存储单元的内容是多少?

CPU R AM 执行前 执行后

CS 3000H FFFFH CX 20506H 06H 不变

DS 2050H 0004H BX 20507H 00H 不变

SS 50A0H 1000H SP 20508H 87H 不变

ES 0FFFH 17C6H DX 20509H 15H 不变

IP 0000H 8094H AX 2050AH 37H 94H

DI 000AH 1403H BP 2050BH C5H 不变

SI 0008H 1 CF 2050CH 2FH 不变

(1)MOV DX ,[BX+2] ;(DX )=0006H,(BX )=0004H

(2)PUSH CX ;(SP )=0FFEH

(3)MOV CX ,BX ;(CX )=0004H,(BX )=0004H

(4)TEST AX ,01 ;(AX )=8094H,(CF )=0

(5)MOV AL ,[SI] ;(AL )=87H

(6)ADC AL ,[DI] ;(AL )=0CCH,(CF )=0

DAA ;(AL )=32H

(7)INC SI ;(SI )=0009H

(8)DEC DI ;(DI )=0009H

(9)MOV [DI],AL ;((DI ))=94H

(10)XCHG AX ,DX ;(AX )=17C6H,(DX )=8094H

(11)XOR AH ,BL ;(AH )=84H,(BL )=04H

(12)JMP DX ;(IP )=17C6H

18、(DS)=2000H ,(BX)=1256H ,(SI)=528FH ,偏移量=20A1H ,(232F7H)=3280H ,(264E5H)=2450H ,试求执行下述指令后的结果。

(1) JMP BX ;(IP)=1256 H

(2) JMP TABLE[BX] ;(IP)=3280 H

(3) JMP [BX][SI] ;(IP)=2450 H

19、设(IP)=3D8FH ,(CS)=4050H ,(SP)=0F17H ,当执行CALL 2000H:0094H后,试指出(IP)、(CS)、(SP)、((SP))、((SP)+1) 、((SP)+2) 和((SP)+3) 的内容。

CALL 指令是5字节指令,下一条指令地址为4050H :3D94H

所以执行后

(IP)=0094H ,(CS)=2000H 、(SP)=0F13H

((SP))=94H ,((SP)+1) =00H ,((SP)+2) =00H ,((SP)+3) =20H

第五章 汇编语言程序设计

2.PLENTH 的值为0022,它表示当前已分配单元空间;

3.L 的值为6;

5. (AX )=000AH;(BL )=0AH;(CL )=01H;

10.

MOV AX, 4A82H

MOV DL ,AH

AND DL ,0F0H

MOV CL ,4

SHR DL ,CL

PUSH AX

AND AH ,0FH

MOV BH ,AH

AND AL ,0F0H

MOV BL ,AL

MOV CL ,4

SHR BL ,CL

MOV CL ,BH

POP AX

AND AL ,0FH

11. data segment

string1 db 'I am a student.' string2 db 'I am a student .' yes db 'match',0dh,0ah,'$' no db 'no match',0dh,0ah,'$' data ends

code segment

assume cs:code,ds:data,es:data start: push ds

sub ax,ax

push ax

mov ax,data

mov ds,ax

mov es,ax

lea si,string1

lea di,string2

mov cx,string2-string1 cld

repe cmpsb

jnz dispno

mov ah,9

lea dx,yes

int 21h

jmp exit

dispno: mov ah,9

lea dx,no

int 21h

exit: MOV AH,4CH

INT 21H

code ends

13. DATA SEGMENT

M DB 11H,22H,33H,44H,64H,87H,34,29,67H,88H,0F6H

DB 43H,0B7H,96H,0A3H,233,56H,23H,56H,89H

C EQU 20

P DB 20 DUP(?)

N DB 20 DUP(?)

PLUS DB 'PLUS',0DH,0AH,'$'

MINUS DB 'MINUS',0DH,0AH,'$'

J DB 2 DUP(?)

DA TA ENDS

CODE SEGMENT

ASSUME CS:CODE, DS:DATA

START: MOV AX,DA TA

MOV DS,AX

LEA SI,M

LEA DI,P

LEA BX,N

MOV CX,C

MOV DX,0

LOOP1: LODSB

TEST AL,80H

JNZ MINUS1 ;负数转移

MOV [DI],AL

INC DI

INC DH ;存正数个数

JMP AGAIN

MINUS1: MOV [BX],AL

INC BX

INC DL ; 存负数个数

AGAIN: DEC CX

JNZ LOOP1

MOV WORD PTR J,DX ; 存结果

MOV DX,OFFSET MINUS

MOV AH,9

INT 21H ; 显示提示信息

MOV BL,J

MOV CH,2

ROTA TE: MOV CL,4

ROL BL,CL

MOV AL,BL

AND AL,0FH

ADD AL,30H

CMP AL,3AH

JL POR

ADD AL,7

POR: MOV DL,AL

MOV AH,2

INT 21H

DEC CH

JNZ ROTA TE ; 十六进制形式输出负数个数

MOV AH,2

MOV DL,0DH

INT 21H

MOV DL,0AH

INT 21H

MOV DX,OFFSET PLUS

MOV AH,9

INT 21H

MOV DH,J+1

MOV CH,2

ROTA TE1: MOV CL,4

ROL DH,CL

MOV AL,DH

AND AL,0FH

ADD AL,30H

CMP AL,3AH

JL POR1

ADD AL,7

POR1: MOV DL,AL

MOV AH,2

INT 21H

DEC CH

JNZ ROTA TE1

MOV AH,4CH

INT 21H

CODE ENDS

END START

第六章 半导体存储器

2、 (1) 64片 片内寻址线 10根,片间寻址线 6根

(2) 128片 片内寻址线 11根,片间寻址线 5根

(3) 16片 片内寻址线 11根,片间寻址线 5根

(4) 2片 片内寻址线 14根,片间寻址线 2根

3、1024×8的RAM 芯片,地址线11根。数据线8根

6、已知:8位微机地址,总线16位,设计12KB 存储系统,其中ROM 占用0000H 开始的8KB ,RAM 占用2000H 开始的4KB ,存储芯片分别选用INTEL 2716和2114

分析如下:(1)ROM 2716 2K ×8芯片,需4片,做字扩展,片内寻址线11根 RAM 2114 1K ×4芯片,需8片,做字位扩展,片内寻址线10根

(2)地址范围: A15 A14 A13 A12 A11 A10 ROM1:0000H~07FFH 0 0 0 0 0 0

ROM2:0800H~0FFFH 0 0 0 0 1 0

A15 A14 A13 A12 A11 A10

ROM3:1000H~17FFH 0 0 0 1 0 0

ROM4:1800H~1FFFH 0 0 0 1 1 0

RAM1、2:2000H~23FFH 0 0 1 0 0 0

RAM3、4:2400H~27FFH 0 0 1 0 0 1

RAM5、6:2800H~2BFFH 0 0 1 0 1 0

RAM7、8:2C00H~2FFFH 0 0 1 0 1 1

(3)A11、A12、A13 3:8译码器 译码输入 (一级译码)

ROM1 :Y0

ROM2 :Y1

ROM3 :Y2

ROM4 :Y3

RAM1、2 :Y4 与 A10 (二级译码)

RAM3、4 :Y4 与 A10

RAM5、6 :Y5 与 A10

RAM7、8 :Y5 与 A10

(4)画图连接 略

9、8088组成的小型计算机系统,32KB ROM, 其地址范围00000~07FFFH, RAM 占用8KB, 地址范围:08000H~09FFFH。ROM 选用 2764(8K ×8),RAM 选用2114(1K ×4) 分析如下 (1) ROM 2764 8K ×8芯片,需4片,做字扩展,片内寻址线13根 RAM 2114 1K ×4芯片,需16片,做字位扩展,片内寻址线10根

(2) 地址范围: A15 A14 A13 A12 A11 A10

ROM1 00000~01FFF H 0 0 0 (一级译码) ROM2 02000~03FFF H 0 0 1

ROM3 04000~05FFF H 0 1 0

ROM4 06000~07FFFH 0 1 1

RAM1(组)08000~083FFH 1 0 0 0 0 0 (二级译码) RAM2 08400~087FFH 1 0 0 0 0 1

RAM3 08800~08BFFH 1 0 0 0 1 0

RAM4 08C00~08FFFH 1 0 0 0 1 1

RAM5 09000~093FFH 1 0 0 1 0 0

RAM6 09400~09FFFH 1 0 0 1 0 1

RAM7 09800~09BFFH 1 0 0 1 1 0

RAM8 09C00~09FFFH 1 0 0 1 1 1

(3) ROM1 Y0 (1 # 译码器 A15 A14 A13 译码输入)

ROM2 Y1

ROM3 Y2

ROM4 Y3

RAM1 Y0 (2 # 译码器 A12 A11 A10译码输入 1 # Y4做2#的控制信号) RAM2 Y1

RAM3 Y2

RAM4 Y3

RAM5 Y4

RAM6 Y5

RAM7 Y6

RAM8 Y7

(4) 需两片3:8译码器

画图连接 略

第七章 输入 / 输出 与 中断

15、01D8 H

16、接通打印机→ 检查打印状态→ 发送数据

OR AL,01 H

OUT 0F7H , AL

IN AL ,0F6 H

OUT 0F5H , AL

第八章 可编程接口芯片及应用

初始化命令字 及 计数初值

CUNT0 36H 或37H 1000

CUNT1 54H 或55H 100

始化控制字

(1)99H (2) B6 H PC2及PC4 置位命令字

09 H 05 H


相关内容

  • 2014秋大连理工大学[微机原理与控制技术]在线作业1
  • 2014秋大连理工大学<微机原理与控制技术>在线作 业1 大工14秋<微机原理与控制技术>在线作业1 一.单选题(共5道试题,共20分.) 1. 专门用来传送控制信号的总线是(). A. 系统总线 B. 数据总线 C. 控制总线 D. 地址总线 正确答案:C 2. 以下指令中 ...

  • [微机继电保护装置运行管理规程]试题及答案
  • <微机继电保护装置运行管理规程>试题及答案 一. 填空题 1.对于安装在开关柜中10kV--66kV 微机继电保护装置,要求环境温度在(-5℃-45℃)范围内,最大相对湿度不应超过(95℅).微机继电保护装置室内月最大相对湿度不应超过75%,应防止灰尘和不良气体侵入.微机继电保护装置室内 ...

  • 微机原理第五章习题参考答案
  • 一. ROM :即只读存储器,数据写入存储单元后不能改写,但读取数据永远有效.ROM 为非易失性存储器,掉电后数据将保持. RAM :即随机存取存储器,能对存储器的存储空间中的某一存储单元随机寻找,即由给定的地址定位完成该单元的数据的存取操作.RAM 为易失性存储器,调电后数据将丢失. 二. SRA ...

  • 微机原理与应用试卷a
  • 微机原理与应用试卷 一.单项选择题(每小题 1 分共 10 分) 1. 能够被CPU直接识别的语言是 ( ) ① 汇编语言 ② 高级语言 ③ 机器语言 ④ 应用语言 2. 若内存容量为64KB,则访问内存所需地址线多少条. ( ) ① 16 ② 20 ③ 18 ④ 19 3. RESET信号有效后, ...

  • 微机原理试题1(含答案)
  • 微型计算机原理 2006 年6 月 27日 一 二 三 四. 五 六 七 八 一.填空题 (每空1分,共30分) 1.若字长为16位,X=75D,则[X]补= 004B H, [-X]补= FFB5 H . 2.设两个二进制数X=01101010B,Y=10100010B,试比较它们大小: (1)X ...

  • 微机原理第三章(1)及答案
  • 第三章习题集 二. 选择题(每小题1分,共15分) 1. 逻辑地址1000:2000对应的物理地址为( B ). A .1200H B.12000H C.2100H D.21000H 2. 下面哪个寄存器使用时的默认段寄存器为SS ( C ). A.AX B.BX C.SP D.SI 3. 当使用B ...

  • [微机原理与接口技术]试卷含答案免费
  • <微机原理与接口技术>试卷(A) 一.填空.(30分 1分/空) 1.符号数-8192的补码用十六进制数表示为 H. 2.8位补码数CBH的真值用十进制表示为 . 3.十进制数1025所对应的十六进制数为 :所对应的压缩BCD数为 :所对应的ASCII码为 . 4.将8为无符号数A2H扩 ...

  • 微机原理及接口技术试卷及答案
  • IP和段寄存器依次属于____BIU.BIU 1. 设M/IO.RD和WR在某时刻分别为1.1和0,指令中与其对应的是___ MOV ES:[DI], AX 2. 执行返回指令,退出中断服务程序,这时返回地址来自_____.堆栈区 5 从硬件角度而言,采用硬件最少的数据传送方式为_____ 无条件传 ...

  • 微机原理与接口技术试题及答案
  • 一. 填空 1. 2.8088或8086CPU中PSW共有9个标志位,它们可分为两组,其中6个为状态标志,3个为 控制 标志. 3. 计算机系统由_____硬件系统_____和_____软件系统_____两部分构成. 4.8086/8088中断源分为两大类:外部中断和____内部中断______. ...

  • 微机原理作业与答案第四章
  • 第四章 汇编语言程序设计 4-2 下列程序执行后,寄存器AX ,BX ,CX 的内容分别是多少? ORG 0202H DA_WORD DW 20H MOV AX,DA_WORD ;(AX)=0020H MOV BX,OFFSET DA_WORD ;(BX)=0202H (BX)=0,这是 书中的参考 ...