《微型计算机原理与接口技术》周荷琴 - 吴秀清(第三版)课后习题答案

发布时间:2012-03-21 15:47:32   来源:文档文库   
字号:

第一章

1. 什么是冯·诺依曼机?

答: ·诺依曼于1945 年提出了存储程序的概念和二进制原理,利用这种概念和原

理设计的电子计算机系统统称为冯·诺依曼机。

它包括运算器、控制器、存储器、输入设备和输出设备五个组成部分。

早期的冯·诺依曼机结构上以运算器和控制器为中心,随着计算机体系结构的发展,

现在已演化为以存储器为中心的结构。

2. 微处理器,微型计算机,微型计算机系统有什么联系与区别?

答:微处理器是微型计算机系统的核心,也称为CPU(中央处理器)。主要完成:从存储

器中取指令,指令译码;简单的算术逻辑运算;在处理器和存储器或者I/O 之间传送数

据;程序流向控制等。

微型计算机由微处理器、存储器、输入/输出接口电路和系统总线组成。

以微型计算机为主体,配上外部输入/输出设备及系统软件就构成了微型计算机系统。

三者关系如下图:

3. 微处理器有哪些主要部件组成?其功能是什么?

答:微处理器是一个中央处理器,由算术逻辑部件ALU、累加器和寄存器组、指令指针寄

存器IP、段寄存器、标志寄存器、时序和控制逻辑部件、内部总线等组成。

算术逻辑部件ALU 主要完成算术运算及逻辑运算。

累加器和寄存器组包括数据寄存器和变址及指针寄存器,用来存放参加运算的数据、

中间结果或地址。

指令指针寄存器IP 存放要执行的下一条指令的偏移地址,顺序执行指令时,每取一条

指令增加相应计数。

段寄存器存放存储单元的段地址,与偏移地址组成20 位物理地址用来对存储器寻址。

标志寄存器flags 存放算术与逻辑运算结果的状态。

时序和控制逻辑部件负责对整机的控制:包括从存储器中取指令,对指令进行译码和

分析,发出相应的控制信号和时序,将控制信号和时序送到微型计算机的相应部件,使CPU

内部及外部协调工作。

内部总线用于微处理器内部各部件之间进行数据传输的通道。

31238D=2326Q=4D6H 492D=134Q=5CH

12. 将下列十进制数转换为8 位有符号二进制数。

1+32 2-12 3+100 4-9

答:(1[+32]=[+32]=[+32]=00100000B

2[-12]=10001100B [-12]=11110011B

3[+100]=[+100]= [+100]=01100100B

4[-92]=11011100B [-92]=10100011B

13. 将下列十进制数转换为压缩和非压缩格式的BCD 码。

1102 244 3301 41000

答:(1[102]压缩BCD=00000001 00000010B

[102]非压缩BCD=00000001 00000000 0

2[44]压缩BCD=01000100B

[44]非压缩BCD=00000100 0

3[301]压缩BCD=00000011 00000001B

[301]非压缩BCD=00000011 00000000 0

4[1000]压缩BCD=00010000 00000000B

[1000]非压缩BCD=00000001 00000000 0

14. 将下列二进制数转换为有符号十进制数。

110000000B 200110011B 3

答:(1)看作原码时真值为-0,看作反码时真值为-127,看作补码时真值为-128

2+51

3)看作

4)看作原码时真值为-9,看作反码时真值为-118,看作补码时真值为-119

第二章

1. 8086CPU 内部由哪两部分组成?它们的主要功能是什么?

答:8086CPU 内部由执行单元 EU 和总线接口单元 BIU 组成。

主要功能为:执行单元 EU 负责执行指令。它由算术逻辑单元(ALU)、通用寄存器组、

16 位标志寄存器(FLAGS)EU 控制电路等组成。EU 在工作时直接从指令流队列中取指令

代码,对其译码后产生完成指令所需要的控制信息。数据在 ALU 中进行运算,运算结果

的特征保留在标志寄存器 FLAGS 中。

总线接口单元 BIU 负责 CPU 与存储器和 IO 接口之间的信息传送。它由段寄存

器、指令指针寄存器、指令队列、地址加法器以及总线控制逻辑组成。

2. 8086CPU 中有哪些寄存器?各有什么用途?

答:8086CPU 内部包含4 16 位寄存器,分别是通用寄存器组、指针和变址寄存器、段寄

存器、指令指针和标志位寄存器。

1)通用寄存器组 包含4 16 位通用寄存器 AXBXCXDX,用以存放普通

数据或地址,也有其特殊用途。如AXAL)用于输入输出指令、乘除法指令,BX 在间接

寻址中作基址寄存器,CX 在串操作和循环指令中作计数器,DX 用于乘除法指令等。

2)指针和变址寄存器 BPSPSI DI,在间接寻址中用于存放基址和偏移地址。

3)段寄存器 CSDSSSES 存放代码段、数据段、堆栈段和附加段的段地址。

4)指令指针寄存器IP 用来存放将要执行的下一条指令在现行代码段中的偏移地址。

5)标志寄存器Flags 用来存放运算结果的特征。

3. 8086CPU 8088CPU 的主要区别是什么?

答:8088CPU 的内部结构及外部引脚功能与8086CPU 大部分相同,二者的主要不同之处如

下:

18088 指令队列长度是4 个字节,8086 6 个字节。

28088 BIU 内数据总线宽度是8 位,而EU 内数据总线宽度是16 位,这样对16

位数的存储器读/写操作需要两个读/写周期才能完成。8086 BIU EU 内数据总线宽度都

16 位。

38088 外部数据总线只有8 AD7AD0,即内部是16 位,对外是8 位,故8088

也称为准16 位机。

48088 中,用IO/M信号代替M/IO信号。

58088 中,只能进行8位数据传输,BHE不再需要,改为SS0,与DT/R IO/M

一起决定最小模式中的总线周期操作。

4. 简要解释下列名词的意义:CPU,存储器,堆栈,IPSPBP,段寄存器,状态标志,

控制标志,物理地址,逻辑地址,机器语言,汇编语言,指令,内部总线,系统总线。

答:CPU:中央处理器,是整个计算机系统的控制中心,主要功能是进行算术和逻辑运算,

以及发出各种控制信号以协调整个系统正常工作。

存储器:是计算机系统中的记忆元件,用于存储指令和数据。

堆栈:在存储器中开辟的一个区域,用来存放需要暂时保存的数据。其操作特点是先

进后出。

IP:指令指针寄存器,用来存放将要执行的下一条指令在现行代码段中的偏移地址。

SP:堆栈指针寄存器,用于指向当前栈顶单元。

BP:基址指针,间接寻址中用于存放基址,隐含段地址为SS

段寄存器:用于存放逻辑段的段地址。

状态标志:SFZFOFAFPF CF,反映运算结果的状态特征。

控制标志:IFDF TF,对可屏蔽中断、字符串操作指针变换方向和单步运行起控制

作用。

物理地址:指存储器中存储单元的实际地址编码,是一种绝对地址,是CPU 访问存储

器的实际寻址地址,对于8086 系统,地址范围为00000HFFFFFH

逻辑地址:由段基址和偏移地址组成,均为无符号的16 位二进制数,程序设计时采用

逻辑地址,可由逻辑地址变换为物理地址,物理地址=段基址×16+偏移地址。

机器语言:直接用二进制代码指令表达的计算机语言,指令是用0 1 组成的一串代

码,计算机可以直接识别,不需要进行任何翻译。每台机器的指令,其格式和代码所代表的

含义都是硬性规定的,故称之为面向机器的语言,也称为机器语言,是第一代计算机语言。

汇编语言:使用助记符表示的二进制代码指令语言,是一种符号化的机器语言,必须

经编译程序将汇编语言编译成机器语言,计算机才能识别。

指令:能被计算机识别并执行的二进制代码,规定了计算机能完成的某一操作。

内部总线:微处理器内部各个部件之间传送信息的通道。

系统总线:微处理机机箱内的底板总线,用来连接构成微处理机的各个插件板,如ISA

总线、EISA 总线、PCI 总线等。

5. 要完成下述运算或控制,用什么标志位判别?其值是什么?

1)比较两数是否相等 2)两数运算后结果是正数还是负数

3)两数相加后是否溢出 4)采用偶校验方式,判定是否要补1

5)两数相减后比较大小 6)中断信号能否允许

答:(1ZF,两数相减,若ZF=1,则相等。

2SFSF=1 则为负,否则为正

3)对有符号数:OFOF=1 为溢出;对无符号数:CFCF=1 为溢出

4PFPF=1,不补1

5)对有符号数:无溢出时(OF=0),如 ZF=1,则两数相等;如 ZF=0 SF=0,则

被减数大;如 ZF=0 SF=1,则减数大; 有溢出时(OF=1),如 SF=1,则被减数大;如

SF=0,则减数大; 对无符号数:如 ZF=1,则两数相等;如 CF=0,则被减数大;如 CF=1

则减数大

6IFIF=1,允许中断

6. 8086 系统中存储器采用什么结构?用什么信号来选中存储体?

答:8086 系统中,存储器采用分体结构,1MB 的存储空间分成两个存储体:偶地址存储体

和奇地址存储体,各为512KB

使用A0 BHE 来区分两个存储体。当A0=0 时,选中偶地址存储体,与数据总线低8

位相连,从低8 位数据总线读/写一个字节。

BHE =0 时,选中奇地址存储体,与数据总线高8 位相连,从高8 位数据总线读/

一个字节。

A0=0BHE =0 时,同时选中两个存储体,读/写一个字。

9. 段寄存器装入如下数据,写出每段的起始和结束地址。

11000H 21234H 32300H 4E000H 5AB00H

答:(110000H~1FFFFH

212340H~2233FH

323000H~32FFFH

4E0000H~EFFFFH

5AB000H~BAFFFH

10. 根据下列CSIP 的组合,求出要执行的下一条指令的存储器地址。

1CSIP=1000H2000H 2CSIP=2000H1000H

3CSIP=1A00HB000H 4CSIP=3456HAB09H

答:(112000H 221000H 325000H 43F069H

11. 求下列寄存器组合所寻址的存储单元地址:

1DS=1000HDI=2000H 2SS=2300HBP=3200H

3DS=A000HBX=1000H 4SS=2900HSP=3A00H

答:(112000H 226200H 3A1000H 42CA00H

12. 若当前SS=3500HSP=0800H,说明堆栈段在存储器中的物理地址,若此时入栈10

字节,SP 内容是什么?若再出栈6 个字节,SP 为什么值?

答:物理地址:35000H35800H。入栈 10 个字节后 SP 7F6H。再出栈 6 个字节后 SP

7FCH

14. 存储器中每段容量最多64K 字节,若用debug 调试程序中的r 命令,在屏幕上有如下显

示:

C>debug

-r

AX=0000 BX=0000 CX=0079 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000

DS=10E4 ES=10F4 SS=21F0 CS=31FF IP=0100 NV UP DI PL NZ NA PO NC

1)试画出此时存储器分段示意图

2)写出状态标志OFSFZFCF 的值

答:(1)代码段首地址:31FF0H 当前指令地址:320F0H

数据段首地址:10E40H

堆栈段首地址:21F00H 堆栈段栈顶地址:31EEEH

附加段首地址:10F40H

2OF=SF=ZF=CF=0

15. 说明8086 系统中最小模式最大模式两种工作方式的主要区别是什么?

答:为了便于组成不同规模的系统,在8086 芯片中设计了两种工作模式,即最小模式和最

大模式。

最小模式用于单机系统,系统中所需要的控制信号全部由8086 直接提供;最大模式用

于多处理机系统,系统中所需要的控制信号由总线控制器8288 提供。

16. 8086 系统中为什么要用地址锁存器?8282 地址锁存器与CPU 如何连接?

答:为了减少引脚的数量,8086CPU 的地址引脚和数据引脚分时复用,为了保证在总线操

作周期中地址信号能有效而稳定的输出,必须使用地址锁存器。

由于8086 20 条地址线,故需使用三片8282,其中OE 接地,STB CPU ALE

相连,前两片8282 DI0~DI7 分别与CPU AD0~AD15 相连,第三片8282 DI0~DI3 分别

CPU AD16~AD19 相连,DI4 CPU BHE 相连。

17. 哪个标志位控制CPU INTR 引脚?

答:IF,中断允许标志,IF=1 时,允许可屏蔽中断,IF=0 时,禁止可屏蔽中断。

18. 什么叫总线周期?在CPU /写总线周期中,数据在哪个机器状态出现在数据总线上?

答:CPU 完成一次存储器访问或I/O 端口操作所需要的时间称为一个总线周期,由几个T

状态组成。在读/写总线周期中,数据在T2T4 状态出现在数据总线上。

20. 8086CPU 重新启动后,从何处开始执行指令?

答:重新启动后,CS=FFFFHIP=0000H,故从物理地址为FFFF0H 的位置开始执行指令。

21. 8086CPU 的最小模式系统配置包括哪几部分?

答:8086 最小模式系统配置包括:

8086CPU,存储器,I/O 接口芯片,1 8284 时钟发生器,3 8282 地址锁存器,2

8286 双向数据总线收发器。

第三章

1. 分别说明下列指令的源操作数和目的操作数各采用什么寻址方式。

1MOV AX2408H 2MOV CL0FFH 3MOV BX[SI]

4MOV 5[BX]BL 5MOV [BP+100H]AX 6MOV [BX+DI]’$’

7MOV DXES[BX+SI] 8MOV VAL[BP+DI]DX

9IN AL05H 10MOV DSAX

答:(1)立即数,寄存器 2)立即数,寄存器 3)寄存器间接,寄存器

4)寄存器,寄存器相对 5)寄存器,寄存器相对 6)立即数,基址变址

7)基址变址,寄存器 8)寄存器,相对基址变址

9)直接端口寻址,寄存器 10)寄存器,寄存器

2. 已知:DS=1000HBX=0200HSI=02H,内存10200H10205H 单元的内容分别为10H

2AH3CH46H59H6BH。下列每条指令执行完后AX 寄存器的内容各是什么?

1MOV AX0200H 2MOV AX[200H] 3MOV AXBX

4MOV AX3[BX] 5MOV AX[BX+SI] 6MOV AX2[BX+SI]

答:(10200H 22A10H 30200H

45946H 5463CH 66B59H

3. DS=1000HES=2000HSS=3500HSI=00A0HDI=0024HBX=0100HBP=0200H

数据段中变量名为VAL 的偏移地址值为0030H,试说明下列源操作数字段的寻址方式是什

么?物理地址值是多少?

1MOV AX[100H] 2MOV AXVAL 3MOV AX[BX]

4MOV AXES[BX] 5MOV AX[SI] 6MOV AX[BX+10H]

7MOV AX[BP] 8MOV AXVAL[BP][SI]

9MOV AXVAL[BX][DI] 10MOV AX[BP][DI]

答:(1)直接,10100H 2)直接,10030H 3)寄存器间接,10100H

4)寄存器间接,20100H 5)寄存器间接,100A0H 6)寄存器相对,10110H

7)寄存器间接,35200H 8)相对基址变址,352D0H

9)相对基址变址,10154H 10)基址变址,35224H

4. 写出下列指令的机器码

1MOV ALCL 2MOV DXCX 3MOV [BX+100H]3150H

答:(110001010 11000001B

210001011 11010001B

311000111 10000111 00000000 00000001 01010000 00110001B

5. 已知程序的数据段为:

DATA SEGMENT

A DB ‘$’,10H

B DB ‘COMPUTER’

C DW 1234H, 0FFH

D DB 5 DUP(?)

E DD 1200459AH

DATA ENDS

求下列程序段执行后的结果是什么。

MOV AL, A

MOV DX, C

XCHG DL, A

MOV BX, OFFSET B

MOV CX, 3[BX]

LEA BX, D

LDS SI, E

LES DI, E

答:MOV AL, A AL=24H

MOV DX, C DX=1234H

XCHG DL, A DL=24H, A=34H

MOV BX, OFFSET B BX=2

MOV CX, 3[BX] CX=5550H

LEA BX, D BX=000EH

LDS SI, E DS=1200H, SI=459AH

LES DI, E ES=1200H, DI=459AH

6. 指出下列指令中哪些是错误的,错在什么地方。

1MOV DLAX 2MOV 8650HAX 3MOV DS0200H

4MOV [BX][1200H] 5MOV IP0FFH 6MOV [BX+SI+3]IP

7MOV AX[BX][BP] 8MOV ALES[BP] 9MOV DL[SI][DI]

10MOV AXOFFSET 0A20H 11MOV ALOFFSET TABLE

12XCHG AL50H 13IN BL05H 14OUT AL0FFEH

答:(1)长度不匹配 2)立即数不能做目的操作数

3)段寄存器不能用立即数赋值 4)两个内存单元不能直接传送数据

5IP 不能用指令直接修改 6)指令中不能出现 IP

7BX/BP 应与 SI/DI 搭配 8)正确

9SI/DI 应与 BX/BP 搭配 10OFFSET 后应跟内存单元

11)偏移地址为16 位,AL 长度不够 12)立即数不能用于XCHG

13IN 必须用 AL/AX 14)操作数顺序反向;地址应为 8

9. 下列指令完成什么功能?

1ADD ALDH 2ADC BXCX 3SUB AX2710H

4DEC BX 5NEG CX 6INC BL

7MUL BX 8DIV CL

答:(1AL+DH→AL 2BX+CX+CF→BX 3AX-2710H→AX

4BX-1→BX 50-CX→CX 6BL+1→BL

7AX*BX→DXAX 8AX/CL →AL,余数→AH

14. 在下列程序段括号中分别填入以下指令

1LOOP NEXT 2 LOOPE NEXT 3 LOOPNE NEXT

试说明在这三种情况下,程序段执行完后,AXBXCXDX 的内容分别是什么。

START: MOV AX,01H

MOV BX,02H

MOV DX,03H

MOV CX,04H

NEXT: INC AX

ADD BX,AX

SHR DX,1

( )

答:(1 AX=05H BX=10H CX=0 DX=0

2 AX=02H BX=04H CX=03H DX=01H

3 AX=03H BX=07H CX=02H DX=0

16. 中断向量表的作用是什么?它放在内存的什么区域内?中断向量表中的什么地址用于

类型3 的中断?

答:中断向量表用来存放中断服务程序的入口地址。8086 256 类中断的入口地址要占用

1K 字节,位于内存00000H003FFH 的区域内。中断向量表中0000CH0000FH 用于类型

3 的中断。

17. 设类型2 的中断服务程序的起始地址为04850016H,它在中断向量表中如何存放?

答:物理地址 内容

00008H 16H

00009H 00H

0000AH 85H

0000BH 04H

18. 若中断向量表中地址为0040H 中存放240BH0042H 单元里存放的是D169H,试问:

1)这些单元对应的中断类型是什么?

2)该中断服务程序的起始地址是什么?

答:(110H

2D169H:240BH

19. 简要说明8086 响应类型04 中断的条件是什么?

答:类型0:除法错中断

执行除法指令时,若除数为0 或所得商超过寄存器能容纳的范围,则自动产生类型0

中断。

类型1:单步中断

CPU 的单步标志TF=1,则每执行完一条指令后,自动产生类型1 中断。

类型2:不可屏蔽中断NMI

8086 NMI 引脚上接收到由低变高的电平变化时,将自动产生类型2 中断。

类型3:断点中断

若在程序中某位置设置断点,当程序执行到该断点时,则产生类型3 中断。

类型4:溢出中断

若溢出标志OF=1,则可由溢出中断指令INTO 产生类型4 中断。

第四章

1. 下列变量各占多少字节?

A1 DW 23H5876H

A2 DB 3 DUP(?),0AH0DH, ‘$’

A3 DD 5 DUP(1234H, 567890H)

A4 DB 4 DUP(3 DUP(1, 2,’ABC’))

答:A1 4 个字节

A2 6 个字节

A3 40 个字节

A4 60 个字节

2. 下列指令完成什么功能?

MOV AX00FFH AND 1122H+3344H

MOV AL15 GE 1111B

MOV AX00FFH LE 255+6/5

AND AL, 50 MOD 4

OR AX, 0F00FH AND 1234 OR 00FFH

答:(1)将0066H 传送给AX

2)将0FFH 传送给AL

3)将0FFFFH 传送给AX

4AND AL02H

5OR AX00FFH

3. 有符号定义语句如下:

BUF DB 3,4,5,’123’

ABUF DB 0

L EQU ABUF-BUF

L 的值为多少?

答:L=6

4. 假设程序中的数据定义如下:

PAR DW ?

PNAME DB 16 DUP(?)

COUNT DD ?

PLENTH EQU $-PAR

PLENTH 的值为多少?表示什么意义?

答:PAR 的偏移地址为0PLENTH 当前偏移地址$=2+16+4=22 $-PAR=22,故PLENTH

的值为22

若在PLENTH 所在行有变量定义,则$表示该变量的偏移地址,即$表示PLENTH 所在

行的当前偏移地址。故PLENTH 表示从当前行到PAR 之间定义的变量所占的字节个数。

5. 对于下面的数据定义,各条MOV 指令执行后,有关寄存器的内容是什么?

DA1 DB ?

DA2 DW 10 DUP(?)

DA3 DB ‘ABCD’

MOV AX, TYPE DA1

MOV BX, SIZE DA2

MOV CX, LENGTH DA3

答:AX=1,BX=20,CX=1

6. 下段程序完成后,AH 等于什么?

IN AL, 5FH

TEST AL, 80H

JZ L1

MOV AH, 0

JMP STOP

L1: MOV AH, 0FFH

STOP: HLT

答:讨论从端口5FH 输入的数据最高位的情况。若最高位为1,则AH=0;若最高位为0

AH=0FFH

8. 编两个通过过程完成将AX 中存放的二进制数转换成压缩型BCD 码以及将BCD 码转换成二进制数。

答:(1)将AX 中的二进制数先后除以1000100 10,每次除法所得的商,即是BCD

的千位、百位和十位数,余数是个位数。

子程序名:B2TOBCD

输入参数:AX=十六位二进制数

输出参数:CF=0,则AX=4 位压缩型BCD 码。CF=1,则要转换的数大于9999AX

变。

使用寄存器:CX:存放除数,DX:存放中间结果。

B2TOBCD PROC FAR

CMP AX,9999 AX>9999,则CF 1

JBE TRAN

STC

JMP EXIT

TRAN: PUSH CX

PUSH DX

SUB DX,DX DX 0

MOV CX,1000 ;计算千位数

DIV CX

XCHG AX,DX ;商在DX 中,余数在AX

MOV CL,4

SHL DX,CL DX 左移4

MOV CL,100 ;计算百位数

DIV CL

ADD DL,AL ;百位数加到DL 中,DX 左移4

MOV CL,4

SHL DX,CL

XCHG AL,AH ;余数保留在AL

SUB AH,AH

MOV CL,10 ;计算十位数

DIV CL

ADD DL,AL ;十位数加到DL 中,DX 左移4

MOV CL,4

SHL DX,CL

ADD DL,AH ;加个位数

MOV AX,DX ;结果送到AX

POP DX

POP CX

EXIT: RET

B2TOBCD ENDP

2)将AX 4 BCD 码顺序乘以100010010 1,然后求和即得。

子程序名:BCDTOB2

输入参数:AX=4 位压缩BCD

输出参数:AX=十六位二进制数

使用寄存器:BX:暂存数据,CX:存放乘数,DX:存放中间结果

BCDTOB2 PROC FAR

PUSH BX

PUSH CX

PUSH DX

MOV BX,AX

MOV CL,4

ROL AX,CL

AND AX,000FH

MOV CX,1000 ;乘以1000

MUL CX

MOV DX,AX

MOV AX,BX

MOV CL,8

ROL AX,CL

AND AX,000FH

MOV CL,100 ;乘以100

MUL CL

ADD DX,AX

MOV AX,BX

MOV CL,4

SHR AX,CL

AND AX,000FH

MOV CL,10 ;乘以10

MUL CL

ADD DX,AX

AND BX,000FH

ADD DX,BX

MOV AX,DX

POP DX

POP CX

POP BX

RET

BCDTOB2 ENDP

9. 编写两个通用过程,一个完成ASCII 码转换成二进制数功能,另一个完成ASCII 字符显

示输出功能。

答:(1)将AX 中两位ASCII 码先转化成数字,然后AH*10+AL

子程序名:ASCIITOB2

输入参数:AX=2 ASCII

输出参数:AX=转换后二进制数

使用寄存器:BXCXDX

ASCIITOB2 PROC FAR

PUSH BX

PUSH CX

PUSH DX

MOV BX,AX

SUB AH,30H

MOV AL,AH

MOV CL,10 ;乘以10

MUL CL

MOV DX,AX

MOV AX,BX

SUB AL,30H

MOV AH,0

ADD AX,DX

POP DX

POP CX

POP BX

RET

ASCIITOB2 ENDP

2)使用2 DOS 功能调用显示字符。

子程序名:DISPLAY

输入参数:AX=2 ASCII

输出参数:无

使用寄存器:BXDX

DISPLAY PROC FAR

PUSH BX

PUSH DX

MOV BX,AX

MOV DL,AH

MOV AH,2

INT 21H

MOV AX,BX

MOV DL,AL

MOV AH,2

INT 21H

POP DX

POP BX

RET

DISPLAY ENDP

10. 编制两个通用过程,完成十六进制数转换成ASCII 码并将ASCII 码字符显示。

答:(1)子程序名:HEXTOASC

输入参数:AX4 位十六进制数

输出参数:DX,AX4 ASCII ,DX 2 位,AX 2

使用寄存器:BX,CX,DX

HEXTOASC PROC FAR

PUSH BX

PUSH CX

PUSH DX

MOV BX,AX

MOV CL,4 ;转换AH 4

SHR AX,CL

AND AX,0F00H

ADD AH,30H

CMP AH,3AH

JB A1

ADD AH,7

A1: MOV DH,AH

MOV AX,BX ;转换AH 4

AND AX,0F00H

ADD AH,30H

CMP AH,3AH

JB A2

ADD AH,7

A2: MOV DL,AH

MOV BH,BL ;转换AL 4

MOV CL,4

SHR BL,CL

ADD BL,30H

CMP BL,3AH

JB A3

ADD BL,7

A3: MOV AH,BL

AND BH,0FH ;转换AL 4

ADD BH,30H

CMP BH,3AH

JB A4

ADD BH,7

A4: MOV AL,BH

POP DX

POP CX

POP BX

RET

HEXTOASC ENDP

2)子程序名:DISPLAYASC

输入参数:DXAX4 ASCII

输出参数:无

使用寄存器:BX,CX

DISPLAYASC PROC FAR

PUSH BX

PUSH CX

MOV BX,DX

MOV CX,AX

MOV DL,BH

MOV AH,02H

INT 21H

MOV DL,BL

INT 21H

MOV DL,CH

INT 21H

MOV DL,CL

INT 21H

MOV DL,’H’

INT 21H

POP CX

POP BX

RET

DISPLAYASC ENDP

13. 将键盘上输入的十六进制数转换成十进制数,在屏幕上显示。

答:DATA SEGMENT

STRING DB 'INPUT 4 HEX NUM:',0AH,0DH,'$'

NUM DB 10 DUP(?)

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA

MOV DS,AX

LEA DX,STRING ;显示提示信息

MOV AH,9

INT 21H

MOV BP,4

MOV DX,0

CONT: MOV CL,4 ;输入4 位十六进制数

本文来源:https://www.2haoxitong.net/k/doc/98abeffffab069dc502201cf.html

《《微型计算机原理与接口技术》周荷琴 - 吴秀清(第三版)课后习题答案.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式