文档库 最新最全的文档下载
当前位置:文档库 › 微型机原理与汇编语言复习题及参考答案

微型机原理与汇编语言复习题及参考答案

《微型机原理与汇编语言》课程复习资料

一、单项选择题:

1.设AL=0A8H,CX=2,CF=1,执行RCL AL,CL指令后,AL中的值为 [ ]

A.51H

B.A3H

C.47H

D.0C5H

2.下述指令的执行结果是 [ ]

MOV AL,0C2H

AND AL,0F0H

A.AL=40H

B.AL=20H

C.AL=0C0H

D.AL=0E0H

3.完成对CL寄存器的内容乘以4的正确操作是 [ ]

A.ROL CL,1

B.MUL 4

C.SHL CL,1

D.MOV CL,2

ROL CL,1 SHL CL,1 SHL CL,CL

4.无论BH中原有的数是奇数或偶数,若要使BH中的数一定为奇数,应执行的指 [ ]

A.ADD BH,01H

B.OR BH,01H

C.XOR BH,01H

D.TEST BH,01H

5.假设(AL)= 37H,(BL)= 95H,执行指令IMUL BL后(AX)= [ ]

A.0E903H

B.2003H

C.0DBBH

D.2008H

6.下面的数据传送指令中,错误的操作是 [ ]

A.MOV SS:[BX+DI],1000H

B.MOV DX,1000H

C.MOV WORD PTR[BX],1000H

D.MOV DS,2000H

7.CPU 要访问的某一存储单元的实际地址称 [ ]

A.段地址

B.偏移地址

C.物理地址

D.逻辑地址

8.某存储单元的物理地址是 12345H,可以作为它的段地址有 [ ]

A.2345H

B.12345H

C.12340H

D.1234H

9.计算机能直接识别的的语言 [ ]

A.汇编语言

B.机器语言

C.高级语言

D.低级语言

10.下列指令中操作数在代码段中的是 [ ]

A.MOV AL,25H B.ADD AH,BL C.INC DS:[25] D.CMP AL,BL

11.直接、间接、立即三种寻址方式指令的执行速度,由决至慢的排序为 [ ]

A.直接、立即、间接

B.直接、间接、立即

C.立即、直接、间接

D.不一定

12.若栈顶的物理地址是2010011,当执行完指令CALL AX后,栈顶的物理地址是 [ ]

A.2010211

B.2010111

C.200FFH

D.200FEH

13.当执行完下列指令序列后,标志位 CF和OF的值是 [ ]

MOV AX,OC126H

MOV BX,5AB7H

SUB AX,BX

A.0,0

B.0,1

C.1,0

D.1,1

14.JMP BX的目标地址偏移量是 [ ]

A.SI 的内容

B.SI 所指向的内存字单元之内容

C.IP+SI 的内容

D.IP+[SI]

15.指令 MOV AX,10[BX]的源操作数的寻址方式是 [ ]

A.基址寻址

B.寄存器寻址

C.变址寻址

D.寄存器相对寻址

16.指出下列哪个数据在汇编语言中是非法的? [ ]

A.19BH+25D

B.25+AL

C.108-102Q

D.101B*OABH

17.用来存放即将执行的指令的偏移地址的寄存器是 [ ]

A.SP

B.IP

C.BP

D.CS

18.源变址寄存器是 [ ]

A.SI

B.DI

C.SP

D.BX

19.设SP=1200H,执行POP AX后,SP中的内容为 [ ]

A.SP=1112H

B.SP=11OEH

C.SP=1111H

D.SP=11OFH

20.数字6704不可能是 [ ]

A.六进制数

B.十进制数

C.十二进制数

D.十六进制数

21.下面四个寄存器中,不能用于间接寻址的寄存器是 [ ]

A.BX

B.AX

C.BP

D.DI

22.若(BX)=OCA8H,则执行指令

MOV CL,8

ROR BX,CL后,(BX)= [ ]

A.OCA8H

B.8ACOH

C.OA80CH

D.OA8COH

23.下面数据传送指令中,正确的是 [ ]

A.MOV DS,ES

B.MOV AL,WORD PTR [BX+DI]

C.MOV AL,BYTE PTR [SI+DI]

D.MOV CX,[SI]

24.下列哪一种寻址方式最快? [ ]

A.立即寻址

B.直接寻址

C.寄存器寻址

D.寄存器间接寻址

25.寄存器间接寻址中,操作数在 [ ]

A.通用寄存器

B.堆栈

C.主存单元

D.段寄存器

26.在顺序结构的流程图中,不包含有 [ ]

A.起始框

B.终止框

C.判断框

D.处理框

27.以8086/8088为CPU的微机内存最大容量为 [ ]

A.4MB

B.1MB

C.640KB

D.64KB

28.与lA.5H不等的数据是 [ ]

A.26.3125D

B.11010.0101B

C.32.5Q

D.10110.0100B

29.8位二进制补码表示的整数数据范围是 [ ]

A.-128~127

B.-127~127

C.-128~128

D.-127~128

30.下列四个寄存器中,不允许用传送指令赋值的寄存器是 [ ]

A.CS

B.DS

C.ES

D.SS

31.指令MOV 100[SI][BP],AX的目的操作数的隐含段为 [ ]

A.数据段

B.堆栈段

C.代码段

D.附加段

32.运算型指令的寻址和转移型指令的寻址,其不同点在于 [ ]

A.前者取操作数,后者决定程序的转移地址

B.后者取操作数,前者决定程序的转移地址

C.两者都是取操作数

D.两者都是决定程序的转移地址

33.设AL=0A8H,CX=2,CF=1,执行RCL AL,CL指令后,AL= [ ]

A.51H

B.A3H

C.47H

D.0C5H

34.目的变址寄存器是 [ ]

A.SI

B.DI

C.SP

D.BX

35.下列常用寻址方式中,哪种属于立即寻址? [ ]

A.MOV AX,ES:[2000H]

B.MOV [BX],AX

C.MOV AX,2000H

D.MOV AX,[BX+3AH]

36.设SP=1110H,执行PUSH AX后,SP中的内容为 [ ]

A.SP=1112H

B.SP=110EH

C.SP=I111H

D.SP=110FH

37.下列指令中错误的指令为 [ ]

A.MOV AX,CS

B.MOV DS,1500H

C.MOV SI,BX

D.MOV [2000H],BL

38.语句DA1 DB 2 DUP(3,5),7 汇编后,与该语句功能等同的语句是 [ ]

A.DA1 DB 3,5,7

B.DA1 DB 2,3,5,7

C.DA1 DB 3,5,3,5,7

D.DA1 DB 3,5,7,3,5,7

39.下面四个寄存器中,用来作为I/O端口间接寻址的寄存器是 [ ]

A.BX

B.DX

C.BP

D.DI

40.下列哪一种寻址方式最快? [ ]

A.立即寻址

B.直接寻址

C.寄存器寻址

D.寄存器间接寻址

41.在串处理指令REPNZ CMPSB表示在 [ ]

A.当(CX)不等于0且ZF等于1的情况下,重复执行串搜索

B.当(CX)不等于0且ZF等于0的情况下,重复执行串搜索

C.当(CX)不等于0且ZF等于1的情况下,重复执行串比较

D.当(CX)不等于0且ZF等于0的情况下,重复执行串比较

42.若(DX)=0A74CH,(CL)=5,则指令SAR DX,CL执行后,(DX)= [ ]

A.053AH

B.653AH

C.0FD3AH

D.740AH

43.完成将有符号数BX的内容乘以2的正确指令是 [ ]

A.SHR BX,1

B.SAR BX,1

C.SAL BX,1

D.RCR BX,1

44.指令LOOPNZ的循环执行条件是 [ ]

A.CX ≠0且ZF=0

B.CX ≠0或ZF=0

C.CX ≠0且ZF=1

D.CX ≠0或ZF=1

45.下列寄存器中不能作为间址寄存器的是 [ ]

A.SI

B.DI

C.CX

D.BX

46.JMP WORD PTR[BX]转移的目标地址是 [ ]

A.BX 中的内容

B.SP+BX 之和

C.IP+[BX]之和

D.BX指示的内存单元之内容

二、填空题:

1.计算机中的CPU由__________和__________组成。

2.(51

3.85)10 = ( __________ )16 ; (105.3)8 = ( __________ )10 。

3.假定机器的字长为8位,且最高位为符号位,则(-127)10的原码用8位二进数表示为__________,其补

码用8位二进数可表示为__________。

4.I/O端口有两种编址方式,分别是 __________ 和 __________。

5. 8086/8088的中断系统能够处理 __________ 个不同的中断源,并为每一个中断安排一个编号,称为

中断类型。每种中断类型对应的中断服务程序的入口地址称为 __________。

6.循环结构的程序主要由 __________、循环体、 __________ 和循环控制部分组成。

7.若DS=0F3EH,SI=2000H,COUNT=0A8H,指令MOV AX,(SI+COUNT)中,源操作数的有效地址EA为

__________,其物理地址为__________。

8.当标志位__________=1时表示无符号数运算产生溢出,而当标志位__________=1是表示带符号数运算

产生溢出。

9.将十进制数513.85转换成二进制数、八进制数、十六进制数和BCD码分别可表示为__________、

__________、__________、__________。

10.十进制数52的原码、反码、补码(采用8位二进制,最高位为符号位)分别可表示为_________、

__________、__________。

11.已知某个数的补码为9DH,则其真值为__________。

12.以下宏定义的功能是将一位十六进制数转换为ASCII码,请在空白处填入恰当内容,使程序完整。

HEXTOA __________

AND AL,0FH

CMP AL, __________

JNA HEXTOA1

ADD AL,7H

HEXTOA1: ADD AL, __________

ENDM

13.地址2000H: 0480H,其物理地址是__________,段地址是__________,偏移量是__________。

14.225D= __________B= __________H。

15.已知[X]补=11010101,则X= __________D。

16.执行部件EU的主要功能是:____________________和____________________。

17.8086 CPU在取指令时,会选取段寄存器__________的值作为段基值,再加上由__________提供的偏移

地址形成20位的物理地址。

18.8086最多可处理__________种中断,对每一个中断都设置一个__________。

19.8086 CPU有两种外部中断请求线,它们分别是__________和__________。

20.CPU与外设之间的数据传送方式有__________、__________、__________和DMA方式传送。

21.冯·诺依曼型的计算机制结构由__________、__________、__________、__________和__________五

大部分组成。

22.101011.101B = __________D =__________O = __________H。

23.数字9的ASCII码为__________。

24.I/O端口有_________和_________两种编址方式,8086的最大I/O寻址空间为_________。

25.若一个程序段开始执行之前,(CS)=97F0H,(IP)=1B40H,该程序段启动执行指令的实际地址是________。

26.6AB.24H = __________B = __________O。

27.数字“0”和字母“K”的对应的ASCII码分别为__________和__________。

28.十进制数-26的原码、反码、补码(采用8位二进制,最高位为符号位)分别为__________、__________、__________;已知一个数的补码为B2H,其真值为__________。

29.汇编语句中,语句标号具备的三种属性分别是__________、__________、__________;变量具备的三

种属性分别是__________、__________、__________。

30.8086CPU的数据总线为_________位,地址总线为_________位,最大的存储空间是_________。

31. 8086CPU的标志寄存器共有9个有效标志位,其中有6个状态标志位,分别是_________、__________、

_________、__________、_________、__________。

32.已知X=-1011011B,则X的反码为_________,X的补码为_________。

33.8086CPU在取指令时,会选取段寄存器__________的值作为段基值,再加上由__________提供的偏移地

址形成20位的物理地址。

三、判断题:

1.奇偶标志位PF,当运算结果的低8 位中有偶数个1时,被置为0。 [ ]

2.CS, DS, ES和SS段都可以存放指令代码。 [ ]

3.MOV SI,[SI] [ ]

4.MOV [DI],[SI] [ ]

5.两数相等时转移可用JZ指令。 [ ]

6.OUT [BX],AL [ ]

7.当IF=0时,CPU 不能响应NMI中断。 [ ]

8.把若干个模块连接起来成为可执行文件的系统程序是汇编程序。 [ ]

9.使汇编程序执行某种操作的命令是宏指令。 [ ]

10.串操作指令中,目的操作数的段地址一定在DS寄存器中。 [ ]

11.在汇编语句AGAIN: INC SI中的AGAIN称为标号。 [ ]

12.MOV BH,1000[SI],该指令中源操作数采用的寻址方式是寄存器间接寻址。 [ ]

13.OR AL,AL 是逻辑或操作指令。 [ ]

14.DOS 系统功能调用中,显示单个字符的系统调用号是 01H。 [ ]

15.使计算机执行某种操作的命令是伪指令。 [ ]

四、改错题:

1.下述程序执行后,应将LIST数组中的最大值存入MAX单元,数组元素为无符号字数据,数据个数在CNT

单元中。现已知程序有错,请改正,使之完成预定功能。

1)DSEG SEGMENT

2)LIST DW 1,200,30,400,0,7,4000

3)CNT DB 7

4)MAX DW?

5)DSEG ENDS

6)CSEG SEGMENT

7)ASSUME DS:DSEGDS:CODE

8)F MAX: MOV DX,DSEG

9)MOV DS,AX

10)LEA SI,LIST

11)MOV CX,CNT

12)CLD

13)LODSW

14)DEC CX

15)CMP AL,[SI]

16)JLE SMALL

17)LODS W

18) SMALL: INC SI

19)INC SI

20)DEC CX

21)LOOP AGAIN

22)MOV MAX,SI

23)MOV AL,4CH

24)INT 21H

25)CSEG END

26)END START

2.下面的程序是将内存单元一字节数据乘以10放回单元的程序,找出错误并改正。

DATA SEGMENT

DA DW 34

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA

MOV DS,AX

MOV SI,OFFSET DA

MOV AL,[SI]

MUL 10

MOV [SI],AX

MOV AH,4CH

INT 21H

CODE ENDS

END START

五、简答题:

1.80386/80486有几种工作模式?各有什么特点?

2.假定一个名为MAINPRO的程序要调用子程序SUBPRO,试问:

(1)MAINPRO中的什么指令申明汇编程序SUBPRO是在外部定义的?

(2)SUBPRO怎么知道MAINPRO要调用它?

3.现有(DS)=2000H,(BX)=O100H,(SI)=0002H,(20100H)=12H,(2010H)=34H,(20102H)=56H,(20103H)

=78H,(21200H)=2AH,(21201H)=4CH,(21202H)=B7H,(21203H)=65H,试说明下列指令执行后,AX寄存器中的内容。

(1)MOV AX,[1200H] (2)MOV AX,[BX]

(3)MOV AX,1100H[BX] (4)MOV AX,[BX+SI]

(5)MOV AX,[1100H+BX+SI]

4.汇编语言源程序的语句类型有哪几种?各自的作用和使用规则是什么?

5.一个汇编源程序应该由哪些逻辑段组成?各段如何定义?各段的作用和使用注意事项是什么?

6.什么是微型计算机的系统总线?定性说明微处理器三大总线的作用。

六、程序分析题:

1.试分析下列程序段,如果AX和BX的内容分别给出如下5种情况,问程序分别转向何处?

(1) AX = 1478H, BX = 80DCH

(2) AX = 0B568H, BX = 54B5H

(3) AX = 42C8H, BX = 608DH

(4) AX = 0D023H, BX = 9FD0H

(5) AX = 94B7H, BX = 0B568H

ADD AX,BX

JNO L1

JNC L2

SUB AX,BX

JNC L3

JNO L4

JMP L5

2.已知数据段中定义

DAT1DB 12H,34H,56H,78H

MOVCX,0

MOVAX,WORDPTRDAT1

MOVCL,DAT1+3

当程序段执行完后AX=________,CX=________。

3.执行完程序后,回答指定的问题。

BLOCK DB 20H,1FH,08H,81H,OFFH…

RESULT DB?

START: LEA SI,BLOCK

MOV CH,O

MOV CL,[SI]

DEC CX

INC SI

MOV AL,[SI]

LOP1: CMP AL,[SI+1]

JLE NEXT

MOV AL,[SI+1]

NEXT: INC SI

LOOP LOP1

MOV RESULT,AL

HLT

问:(1)该程序的功能是();

(2)该程序的循环次数是()。

4.分析下列程序,回答问题:

(1)该程序完成什么功能?

(2)程序中的INC SI可否用指令ADD SI,1代替,为什么?

(3)程序中的指令LEA SI,DATAI可用指令()代替。

(4) CLC指令的目的是()。

DATA SEGMENT

DATAI DB 85H,27H,4AH

DATA2 DB 93H,87H,65H

LEGH DW 3

SUM DB 0,0,0

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA

MOV DS,AX

LEA SI,DATA1

LEA BX,DATA2

LEA DI,SUM

MOV CX,LEGH

CLC

AGAIN: MOV AL,[SI]

ADC AL,[BX]

MOV [DI],AL

INC SI

INC BX

INC DI

LOOP AGAIN

MOV AH,4CH

1NT 21H

CODE ENDS

END START

5.执行完程序后,回答指定的问题。

MOV AX,200H

MOV BX,500H

MOV [BX+1OH],30H

ADD AX,[BX+1OH]

LEA SI,[BX+lOH]

MOV BX,AX

问:程序段执行后,SI=(),BX=()。

七、程序设计:

1.将DAT字存储单元中的16位二进制数分成四组,每组四位,然后将这四组数分别放至DAT1、DAT2、DAT3

和DAT4这4个字节单元中。

2.设有10个学生的成绩分别是70,75,89,68,63,88,78,74,81和90。编制一个子程序统计60-69,

70-79,80-89,90-99及100分的人数并分别存放到S6,S7,S8, S9和S10单元中。

3.已知在以BUR为首地址的数据区中存放了N字节数据,编写程序完成将数据块搬至BUF2为首地址的存

储区中,要求:

(1)用一般数据传送指令MOV实现;

(2)用数据串传送指令MOVSB实现;

(3)用数据串指令LODSB/STOSB实现。

4.对一组无符号数进行比较,把最大数显示在屏幕上。

5.已知两个无符号字数据X、Y分别存放在ADRX和ADRY单元,编制程序,若X是Y的倍数,则显示器上

显示0,否则显示1。

6.给定一个正数N>1放在VALU单元中,编写一段递归子程序计算FIB(N),并将结果存入RESULT单元中,

该函数定义如下:

参考答案

一、单项选择题:

1.B 2.C 3.C 4.B 5.A 6.D 7.C 8.D 9.B 10.A 11.C 12.D 13.C 14.A 15.D 16.B 17.B 18.A 19.B 20.A 21.B 22.C 23.D 24.A 25.C 26.C 27.B 28.C 29.A 30.A 31.B 32.A 33.B 34.B 35.C 36.B 37.B 38.C 39.B 40.A 41.B 42.C 43.C 44.C 45.C 46.D

二、填空题:

1.运算器控制器

2.201.D999 69.375

3.11111111 10000001

4.统一编址独立编址

5.256 中断向量

6.循环初始化部分循环参数修改部分

7.20A8H 11488H 8.CF OF

9.1000000001.1011B 1001.6631O 201.D999H 10100010011.10000101B

10.00110100B 00110100B 00110100B

11.-63H

12.MACRO 9 30H

13.20480H 2000H 0480H

14.11100001 E1

15.-43H

16.执行指令产生访问存储器时所需的16位偏移地址

17.CS IP

18.256 中断码类型

19.NMI INTR(可屏蔽中断请求信号)

20.无条件传送查询方式传送中断方式传送

21.运算器控制器存储器输入设备输出设备

22.43.625 53.5 2B.A

23.39H

24.统一编址独立编址 64KB

25.99A40H

26.3253.11 1707.141

27.30H 4BH

28.10011010B 11100101B 11100110B -4EH

29.段属性偏移量属性距离属性;段属性偏移量属性类型属性

30.16 20 1MB

31.进位标志位(CF)辅助进位标志位(AF)符号标志位(SF)

零标志位(ZF)溢出标志位(OF)奇偶标志位(PF)

32.10100100B 10100101B

33.CS IP

三、判断题:

1.×

2.×

3.×

4.×

5.√

6.×

7.×

8.×

9.× 10.×

11.√ 12.× 13.√ 14.√ 15.×

四、改错题:

1.解答:

(1)3行,数据定义伪指令DB改为DW

(2)8行,DX改为AX

(3)15行,循环入口,加标号AGAIN,即将本行改为:AGAIN:CMP AX,[SI]

(4)16行,JLE改为JAE

(5)17行,LODSW改为MOV AX,[SI]

(6)20行,去掉该行语句

(7)22行,SI改为AX

(8)23行,AL改为AH

(9)25行,END改为ENDS

(10)26行,START改为程序入口标号FMAX

2.解答:

MOV AL,[SI] 改为MOV AL,BYTE PTR [SI]

MUL 10 改为MOV BL,10

MUL BL

五、简答题:

1.答:80386/80486有实地址模式、保护模式和虚拟8086模式三种工作方式。

⑴实地址模式下的80386/80486的工作原理与8086相同,内存管理只采用分段管理方式,而不采用分页

管理;内存最大空间为1MB,采用段地址寻址的存储方式,每个段最大为64KB;操作数的默认长度为16位。

⑵保护模式下,CPU实际可访问的物理空间最大为4GB,可选择使用分页结构;存储器空间用逻辑地址、

线性地址和物理地址空间描述;CPU基本结构没有发生变化,指令和寻址方式依旧。在这种寻址方式中,可以对存储器实施保护功能(禁止程序非法操作)和特权级的保护功能(主要保护操作系统的数据不被应用程序修改)。

虚拟8086模式下,既有保护模式功能,又可执行8086的指令代码。

2.答:(1)只要在MAINPRO中用EXTRN说明SUBPRO即可;

(2)只要定义SUBPRO时用PUBLIC定义即可。

3.答:(1)AX=4C2AH (2)AX=3412H (3)AX=4C2AH

(4)AX=7856H (5)AX=65B7H

4.答:汇编语言源程序的语句类型通常有3种类型,分别是:指令语句、伪指令语句和宏指令语句。

(1)指令语句是能产生目标代码、CPU可以执行的能完成特定功能的语句,主要由CPU指令组成。

(2)伪指令语句是种不产生目标代码的语句,在汇编过程中告诉汇编程序应如何汇编。

(3)宏指令语句是一个指令序列,汇编时凡有宏指令语句的地方都将用相应的指令序列的目标代码插入。

5.答:汇编程序是将汇编源程序自动翻译成目的程序的软件,而汇编源程序是用汇编语言编写的程序。

汇编程序的主要功能是将由汇编语言(助记符)编写的源程序翻译成用机器语言(二进制代码)编写的目标程序;汇编源程序的作用是进行程序设计。

6.答:微型计算机的系统总线是CPU与其他部件之间传送数据、地址和控制信息的公共通道。根据传送内

容的不同,系统总线可分成以下3种:

(1)数据总线DB(Data Bus):用于CPU与主存储器、CPU与I/O接口之间传送数据。数据总线的宽度等于计算机的字长。数据总线一般为双向总线,可以向两个方向传输数据。

(2)地址总线AB (Address Bus):用于CPU访问主存储器和外部设备时传送相关的地址。地址总线的宽度决定CPU的寻址能力。

(3)控制总线CB (Control Bus)用于传送CPU对主存储器和外部设备的控制信号。

7.答:宏与子程序两者的相同之处在于:都是用来处理在编程过程中多次使用的功能程序的方法,两者

均能简化源程序。

两者的区别在于:

(1)宏调用通过宏指令名进行,汇编时,随时调用随时展开,并不简化目标程序:子程序调用是在程序

执行期间执行CALL指令,代码只在目标程序中出现一次,所以也简化了目标程序。

(2)宏调用时的参数由汇编程序通过实参转换成形参的方式传递,具有很大的灵活性。宏定义中允许设

置若干形式参数代替数值、指令、寄存器、各种字符串等。宏调用时可用程序所需要的实际参数来替换,使编程人员感觉非常灵活;而子程序的参数传递要麻烦得多。

(3)宏调用在汇编时完成,不需要额外的时间开销;子程序调用和子程序返回都需要时间,还涉及堆栈

操作。

故若优先考虑速度,用宏指令;若优先考虑存储空间,用子程序。

六、程序分析题:

1.答:(1)L1 (2)L1 (3)L2 (4)L3 (5)L3

2.答:AX=3412H,CX=0078H

3.(1)从一组数中寻找最小数送RESULT单元。

(2)31次。

4.解答:

(1)该程序用来将存放在DATA I和DATA2开始的单元中的两个多字节数据相加,并将结果放在SUM开始的连续单元中。

(2)不可以。因为ADD指令影响进位标志位CF状态。

(3)MOV SI,OFFSET DATA1

(4)清进位,以使在数据最低字节相加时,可以用ADC指令。

5.解答:SI=510H BX=230H

七、程序设计:

1.参考答案如下:

DATA SEGMENT

DAT DW 0A5D2H

DAT1 DB ?

DAT2 DB ?

DAT3 DB ?

DAT4 DB ?

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE, DS: DATA

START:

MOV AX, DATA

MOV DS, AX

MOV AX, DAT

MOV BX, 0F0FH

AND BX, AX

MOV DAT1, BL

MOV DAT3, BH

MOV BX, 0F0F0H

AND BX, AX

MOV DAT2, BL

MOV DAT4, BH

MOV AH, 4CH

INT 21H

CODE ENDS

END START

2.参考答案如下:

分析:假设子程序的入口参数成绩表长度放在CX中,SI指向成绩表首单元;出口参数放在S6, S7,S8,S9和S10单元中,并且各单元初值均为0。参考子程序如下:

;子程序名:GRADES

;功能:统计成绩表GRADES中各个分数段的人数

;入口参数:CX中为成绩表长度,SI指向成绩表首单元

;出口参数:各个分数段人数分别放在存储单元S6, S7,S8,S9和S10中

;所用寄存器:AL, CX,SI

GRADES PROC

PUSH CX ;保护用到的寄存器

PUSH SI

PUSH AX

NEXT: CMP CX,O ;判断成绩表是否结束JZ EXIT

DEC CX

MOV AL,[SI] ;将要比较的成绩放在AL中

INC SI

CMP AL,100

JB GRADE9 ;小于100,转向GRADE9

INC[S10];S10单元内容增1

JMP NEXT

GRADE9:CMP AL,90

JB GRADE8 ;小于90,转向GRADE8

INC [S9] ;S9单元内容增1

JMP NEXT

GRADE8:CMP AL,80

JB GRADE7 ;小于80,转向GRADE7

INC[S8];S8单元内容增1

JMP NEXT

GRADE7:CMP AL,70

JB GRADE6 ;小于70,转向GRADE6

INC [S7] ;S7单元内容增1

JMP NEXT

GRADE6: INC [S6];S6单元内容增1 JMP NEXT

EXIT: POP AX

POP SI

POP CX

RET

GRADES ENDP

3.

(1)参考程序如下:

DATA SEGMENT

BUF1 DB -10,0,11,55,125,38,-69,…;N字节数据

CN EQU $-BUF1

BUF2 DB CN DUP(?)

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA

MOV DS,AX

MOV BX,OFFSET BUF1

LEA SI,BUF2

MOV CX,CN

LOP1:MOV AL,[BX]

MOV [SI],AL

INC BX

INC SI

LOOP LOPl

MOV AH,4CH

INT 21H

CODE ENDS

END START

(2)程序的数据定义部分与(1)中相同,不再重复。参考程序段如下:CODE SEGMENT

ASSUME CS:CODE,DS:DATA,ES:DATA

START: MOV AX,DATA

MOV DS,AX

MOV ES,AX

MOV SI,OFFSET BUF1

MOV DI,OFFSET BUF2

CLD

MOV CX,CN

REP MOVSB

MOV AH,4CH

INT 21 H

CODE ENDS

END START

(3)程序的开头和结尾与(2)中相同,不再重复。参考程序段如下:MOV DS,AX

MOV ES,AX

MOV SI,OFFSET BUF1

MOV DI,OFFSET BUF2

CLD

MOV CX,CN

LOP: LODSB

INC SISTOSB

INC DI

LOOP LOP

4.参考答案如下:

DATA SEGMENT

BUFFER DB OOH, 12H,3BH,43H,60H,OCH

DB 8AH,OABH,37H,OFFH,32H,47H

COUNT EQU $-OFFSET BUFFER

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA

MOV DS,AX

MOV SI,OFFSET BUFFER

MOV CX,COUNT

MOV AL,[SI] ;把第一个数取到AL中

INC SI

DEC CX ;比较COUNT-1次

COMPA: CMP AL,[SI];比较,找出大数

JA NEXT

MOV AL,[SI]

NEXT: INC SI

LOOP COMPA ;比较完否?

MOV BL,AL ;是,大数在AL中,将其存入BX中

MOV DL,AL

MOV CL,4

SHR DL,CL

CMP DL,OAHJB L1

ADD DL,7

Ll:A DD DL,30H

MOV AH,02H

INT 21H ;显示高位

MOV DL,BL ;将大数放到DL中

AND DL,OFH ;将高4位屏蔽

CMP DL,OAH

JB L2

ADD DL,7

L2: ADD DL,30H

MOV AH,02H

INT 21 H ;显示低位

MOV AH,4CH

INT 21H

CODE ENDS

END START

5.参考答案如下:

DATA SEGMENT

ADRX DW 144

ADRY DW 12

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA

MOV DS,AX

MOV AX,ADRX

MOV DX,O

DIV ADRY

CMP DX,O

JZ NEXT

MOV DL,'1’

JMP EXIT

NEXT: MOV DL,'0'

EXIT: MOV AH,02H

INT 21H

MOV AH,4CH

INT 21H

CODE ENDS

END START

6.参考答案如下:

DATA SEGMENT

X DB 8

RESULT DB ?

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA START: MOV AX,DATA

MOV DS,AX

MOV CL,X

CMP CL, 1

JNZ NEXT

MOV RESULT,1

JMP EXIT

NEXT: CMP CX,2

JNZ LP

MOV RESULT,1

JMP EXIT

LP: MOV AL, 1

MOV BL,1

CALL FIB

MOV RESULT,BL

MOV AH,4CH

INT 21H

FIB PROC NEAR

ADD AL,BL

XCHG AL,BL

DEC CL

CMP CL,2

JZ NEXT

CALL FIB

NEXT: RET

FIB ENDPCODE ENDS

END START

相关文档
相关文档 最新文档