第四章汇编语言程序设计题库

更新时间:2023-10-21 07:42:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第四章汇编语言程序设计练习题 一、单项选择题(共40题)

1、 关于指令MOV [BX],AX,以下叙述正确的是: A、目的操作数是寄存器操作数 B、源操作数是内存操作数

C、目的操作数是内存操作数

D、源操作数是立即操作数

2、执行下列程序,设(SS)=2000H,执行后(SP)=?

MOV SP,2000H MOV AX,1234H PUSH AX

A.21FFEH B.20000H C.22000H D.22002H

3、 运算型指令的寻址和转移型指令的寻址,其不同点在于

A. 前者取操作数,后者决定程序的转移地址 B. 后者取操作数,前者决定程序的转移地址 C. 两者都是取操作数

D. 两者都是决定程序的转移地址 4、MOV ( ),300

A、WORD PTR [DX] B、BYTE PTR [BX] C、WORD PTR [BP] D、 AL

5、 汇编语言程序代码必须位于代码段中,形成代码段物理地址的寄存器对是 A.SS: SP B.CS: IP C. DS: BX D. CS: BX

6、若定义DAT DW 'A',则(DAT)和(DAT+1)两个相邻的内存中存放的数据是() A.0041H B.4100H C.××41H D.4l××H

7、执行下面的程序段后,(AX)=()

TAB DW 1,2,3,4,5,6 ENTRY EQU 3 MOV BX,OFFSET TAB ADD BX,ENTRT MOV AX,[BX]

A.0003H B.0300H C.0400H D.0004H

8、下面表示段定义结束的命令是( )

A.ENDP B.ENDS C. ENDM D.END

9、设AL、BL,中都是带符号数,当AL<BL时转至NEXT处,在CMP AL,BL指令后应选用正确的条件转移指令是( )

A.JBE B.JL C.JNA D.JNLE

10、指令LOOPZ它的循环执行条件是 ( )

A.CX不等于0且ZF=0 B.CX不等于0或ZF=0 C.CX不等于0且ZF=1 D.CX不等于0或ZF=1

11、执行下列指令后,SP寄存器的值是( ) MOV SP,1000H PUSH AX

A.0FFEH B.0FFFH C.1001H D.1002H

12、完成将有符号数BX的内容除以2的正确指令是() A.SHR BX,1 B.SAR BX,1 C.ROR BX.1 D.RCR BX,1

13、汇编语言源程序经汇编后不能直接生成( ) A.OBJ文件 B.LST文件 C.EXE文件 D.CRF文件

14、执行下列程序(AL)= ( )。 DATA SEGMENT

TAB-DA DB ‘0123456789’ DATA ENDS

CODE SEGMENT

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

MOV BX,OFFSET TAB-DA MOV AL,04 XLAT

A.52 B.33H C.30H D.12

15、设BL=05H,要使结果BL=0AH,应执行的指令是( ) A.N0T BL B.AND BL,0FH C.XOR BL,0FH D.OR BL,0FH

16、用MOV指令将十进制数89以组合型BCD码格式送入AX,正确使用的指令是() A.MOV AX,0089 B.MDV AX,0809H C.MDV AX,0089H D.MOV AX,0809

17、完成BX—CX结果送AX的错误操作是()

A.SUB BX,CX MOV AX,BX B.SUB AX,BX SUB AX,CX C.XCNG AX,BX SUB AX,CX D.MOV AX,BX SUB AX,CX

18、表示一条指令的存储单元的符号地址称 ()

A.标号 B.变量 C.偏移量 D.类型

19、变量的类型属性如下,下面错误的类型是 ()

A.字节型 B.字型 C.字符型 D.双字型

20、 现用数据定义伪指令定义数据:

BUF DB 4 DUP(0,2 DUP(1,0));

定义后,存储单元中有数据0100H的字单元个数是() A.4 B.3 C.8 D.12

21、分析下面指令序列执行后的正确结果是( ) MOV BX,OFFFCH MOV CL,2 SAR BX,CL

A.3FFFH B.0FFFFH C 0FFFCH D.0FFF5H

22、下面指令序列执行后完成的运算,正确的算术表达式应是 ( ) MOV AL,BYTE PTR X; SHL AL,1; DEC AL;

MOV BYTE PTR Y,AL;

A. y=2x+1 B.x=y+1 C.y=2x-1 D.x=y-1

23、 TEST VAR,55H JZ ZERO ZERO:......

上述程序段中,当变量VAR的内容为何值时,执行JZ ZERO条件转移指令后,可满足条件转至ZERO处 ( )

A. (VAR)=0 B.(VAR)=55H C.VAR中第0,2,4,6位为0 D. VAR中第l,3,5,7位为0。

2

2

24、交换寄存器SI、DI的内容,正确的程序段是() A.PUSH SI B.PUSH SI PUSH DI PUSH DI POP SI POP DI POP DI POP SI

C.MOV AX,SI D.MOV AX,SI

25、完成41H送[2100H]、42H送[2101H]的正确程序段是 () A.MOV AL,41H B.MOV SI,2100H MOV [2100H],AL MOV[Sl],’A’ INC AL INC SI

MOV[2100H],AL MOV[S1],’B’ C.MOV AX,4241H D.MOV AX,‘AB’” MOV [2100H],AX MOV[2100H],AX 26、堆栈的工作方式是()

A.先进后出 B。后进先出 C.先进先出 D.后进先出

27、字变量ARRAY的偏移地址(或有效地址)送寄存器BX的正确结果是() A.LEA BX,ARRAY B.LEA BX,OFFSET ARRAY C.LES BX,ARRAY D.MOV BX.ARRAY

28、在用汇编语言开发软件过程中,首先用编辑程序建立扩展名为( )的文件,

经汇编生成扩展名为( F)的目标程序文件,最后连接生成扩展名为( )的可执行文件。 A.TXT B. DOS C.ASM D. EXE E.COM F. OBJ G. PRG H. BAK

29、DEBUG调试工具中,用来显示内存的命令是( ) A.E B.R C.T D.D

30、已知1000H处有一条指令JNC rel,其机器代码是××H、73H,CF=0,试问执行该指令后,(IP)= ( ) A.0FF8DH B.1073H

C. 0FF8BH D.1075H

31、执行下列程序,设(SS)=2000H,执行后AL中的数据在内存地址( )

MOV SP,2000H MOV AX,1234H PUSH AX

A.2000H B.22000H C.21FFEH D.21FFH

32、执行下列程序,设(SS)=2000H,执行后AH中的数据在内存地址( )

MOV SP,2000H MOV AX,1234H PUSH AX

A.20000H B.21FFFH C.22000H D.21FFEH 33、INC指令不影响( )标志位。

A.OF B.CF C.SF D.ZF

34、将AL中带符号数乘10送AL,正确的程序段是( )

A.SAL AL,1 B.ADD AL,AL MOV BL,AL MOV BL,AL SAL AL,1 ADD AL,AL SAL AL,1 ADD AL,AL ADD AL,BL ADD AL,AL C.MOV CL,4 D.ADD AL,AL MOV BL,AL ADD AL,AL SAL AL,CL ADD AL,AL ADD AL,BL ADD AL,AL ADD AL,AL

35、在ADD指令中,两个操作数的物理位置不可以安排在( )中。

A.两个主存储单元 B.一个主存储单元和一个数据寄存器 C.两个数据寄存器 D.一个堆栈单元和一个数据寄存器

36、下面表示汇编源程序结束的命令是( )

A.ENDP B.ENDS C. ENDM D.END

37、 在汇编语言中( )用于定义常数,变量,内存空间的分配和定位.

A.伪指令 B.机器指令 C.宏指令 D.微指令 38、伪指令一般在( )被解释。

A.程序运行时 B.编译程序时 C.连接时 D.编写源程序时

39、若定义DATA DB 0A5H,5BH,在指令 MOV BX,( )DATA中填充,使指令正确执行。

A.WORD B.BYTE PTR C.WORD PTR D.OFFSET

40、 若定义DATA DW 1234H,执行MOV BL,BYTE PTR DATA指令后,(BL)=( )

A.12H B.34H C.23H D.14H

二、填空题(共50个空)

1、立即数一定存放在(1)段中 2、 如果在一个程序开始执行以前CS=-A7F0H,IP=2B40H试问该程序的第一个字的物理地址是( 2 )

3、 已知1000H处有一条指令JNC rel,其机器代码是××H、73H,CF=0,试问执行该指令后,(IP)=( 3 ) 4、现有DS=2000H,BX=0100H,SI=0002H,(20100H)=12H,(20101H)=34H,(20102H)=56H,(20103H)=78H,(21200H)=2AH,(21201H)=4CH,(21202H)=B7H,(21203H)=65H,试说明下列各条指令执行完后AX寄存器的内容。

(1) MOV AX,[1200H];AX=( 4 ) (2) MOV AX,[BX] ;AX=( 5 ) (3) MOV AX,1100[BX] ;AX=( 6 ) (4) MOV AX,[BX][SI] ;AX=( 7 ) (5) MOV AX,1100[BX][SI] ;AX=( 8 ) 5、指示性语句的格式为( 9)。

6、 执行下列程序(AL)=(10)H。

DATA SEGMENT

TAB-DA DB ‘0123456789’ DATA ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA MOV DS,AX

MOV BX,OFSET TAB-DA

MOV AL,04 XLAT TAB-DA 7、 对于下面的数据定义:

A1 DW 20 DUP(?) A2 DB 20 DUP(?) A3 DB‘98765432l’ MOV AX,LENGTH A1 MOV BX,LENGTH A2 MOV CX,LENGTH A3

各条指令执行后,相应寄存器的内容为: AX=( 11 ),BX=( 12 8、 分析以下程序段: SUB AX,BX JNC L3 JNO L4 JMP SHORT

如果AX和BX的内容给定如下: AX BX (1)147B 80DC (2)D023 9FD0 (3)94B7 B568

该程序执行后,程序转向( 14 );(15 );(16 )。

9、执行下列程序段,

MOV SP,2000H MOV AX,0F0H MOV SI,1234H MOV DX,5678H PUSH SI POP DI

,CX=(13 )

) SHL DX,1 TEST AX,DX PUSH DX

SP=(17);

10、执行下列程序段:

MOV SP,2000H MOV AX,0F0H MOV SI,1234H MOV DX,5678H PUSH SI POP DI SHL DX,1 TEST AX,DX PUSH DX

DH内容所在内存的偏移地址为(18 );

11、有下列数据定义语句: DATA SEGMENT ADDR DW NUMBER NUMBER DB 10

ARRAY DB 5 DUP(0)

TABLE DD RT1,RT2 ;(RT1,RT2是标号) DATA ENDS

则变量ADDR中存储的内容是(19),变量TABLE占用(20)个字节 12、根据下面的指令序列,CX寄存器中的值应该是( 21 )。

SHR1 DW 'AB' SHR2 DB 16 DUP(?) CNT EQU $-STR1 MOV CX,CNT 13、执行下列指令后: MOV AX,1234H MOV CL,4 ROL AX,CL DEC AX MOV CX,4 MUL CX

寄存器AH的值是(22),寄存器AL的值是(23).

14、对于下面的数据定义,指令执行后,AX=(24)、BX=(25)、CX=(26)、DX=(27)、SI=

(28)

TABLE1 DB ?

TABLE2 DW 20 DUP(?) TABLE3 DB‘ABCD’

MOV AX,TYPE TABLE1 MOV BX,TYPE TABLE2 MOV CX,LENGTH TABLE2 MOV DX,SIZE TABLE2 MOV SI,LENGTH TABLE3

15、执行下列程序: MOV AX,0 MOV BX,1 MOV CX,100 A:ADD AX,BX INC BX LOOP A HLT

执行后的结果为(BX)=(29),(AX)=(30)。

16、 若定义VAR DB 2 DUP(1,2,2 DUP(3),2 DUP(1)),则在VAL存储区内前5个单元的数据是( 31 )。

17、完成输出显示一个字符的DOS int 21h系统功能调用是( 32)号。

18、执行返回指令,退出中断服务程序,这时返回地址来自(33 )

19、 已知:(AX)=0202H、(ES)=2000H、(BX)=3000H、(SI)=2060H、(25060H)=00B0H,执行指令XCHG AX,ES:[BX+SI],则AX=(34),(25060H)=(35)

20、下列程序段执行后,寄存器AX=(36),BX=(37)和CX=(38)的内容分别是多少? ORG 0202H

DA_WORD DW 20H MOV AX,DA_WORD

MOV BX,OFFSET DA_WORD MOV CL,BYTE PTR DA_WORD MOV CH,TYPE DA_WORD

21、假设数据段的定义如下: P1 DW ?

P2 DB 32 DUP(?) PLENTH EQU $-P1

试问PLENTH的值为(39)它表示的意义是(40)

22、假设BX=54A3H,变量VLAUE中存放的内容为68H,确定下列各条指令单独执行BX的值。 (1)XOR BX,VALUE;BX=(41) (2)OR BX,VALUE;BX=(42) (3)AND BX,00H;BX=(43) (4)SUB BX,VALUE;BX=(44) (5)XOR BX,0FFH;BX=(45) (6)TEST BX,01H;BX=(46) 23、请用DEBUG调试软件的反汇编命令,反汇编在从2060:100H开始的长度为8字节的程序段,该命令为(47)。

24、查看内存数据段中偏移地址为1000H的内容,DEBUG调试命令为(48)

25、在DEBUG调试命令中,N命令是的功能是(49),L命令的功能是(50)。

三、判断题(共30题)

1、 8086/8088微处理器有14个16位寄存器

2、8086/8088微处理器的14个16位寄存器每个都可分成2个8位的寄存器

3、8086/8088微处理器的8个16位的通用寄存器可分为:4个数据寄存器、2个指针寄存器、2个变址寄存器

4、SUB指令和CMP指令的功能相同。 5、MOV AX,0 与XOR AX, AX功能相同。 6、SHL 和SAL指令功能相同。 7、MOV AX,0FFFFH

INC AX 以上两条指令执行后CF=1。

8、有以下定义的数据段,判断该数据段定义下的指令序列正误: DATA SEGMENT

STR1 DB 1,2,3,4,5 STR2 DB ‘12345’ COUNT EQU 20 NUMB DB 3 DUP(6) NUMW DW 20H,80H TABLE DW 0 DATA ENDS

MOV AX,STR1

9、数据定义同第8题,判断该数据段定义下的指令序列正误

MOV BX,OFFSET NUMB

MOV [BX],’+’

10、数据定义同第8题,判断该数据段定义下的指令序列正误 MOV DL,NUMW+2

11、数据定义同第8题,判断该数据段定义下的指令序列正误 MOV BX,OFFSET STR1 MOV DH,BX+3

12、数据定义同第8题,判断该数据段定义下的指令序列正误 INC COUNT

13、数据定义同第8题,判断该数据段定义下的指令序列正误

MOV STR1,STR2

14、数据定义同第8题,判断该数据段定义下的指令序列正误 MOV AX,NUMW+2 MOV DX,0 DIV NUMW

15、数据定义如下,指出指令的正误:

ORG 100H DATA DB 20 DW 30 DD 40

MOV BX,OFFSET DATA MOV AL,[BX+5]

16、数据定义同15题,指令正误: MOV AX,DATA

17、数据定义同15题,指令正误: MOV AX,WORD PTR DATA+1

18、数据定义同15题,指令正误: MOV AX,DATA[BX][SI]

19、数据定义同15题,指令正误: MOV BX,OFFSET DATA[BX][SI] 20、数据定义同15题,指令正误: LEA AX,DATA[BX][SI] MOV AL,[AX]

21、数据定义如下,指出指令的正误: A EQU 500 B DB ? C DW 64H MOV A,AX

22、数据定义如21题,指出指令的正误: MOV B,AX

23、数据定义如21题,指出指令的正误: CMP C,AL

24、数据定义如21题,指出指令的正误: CMP B,C

25、符号及变量定义如下,指出指令的正误: 26、指出指令正误:SAL CL,5 27、指出指令正误:JMP END 28、指出指令正误:JNAB NEXT 29、指出指令正误:LOOP A5

30、指出指令正误:ADD AX,[BX][BP] 四、简答题(共20题)

1、简述汇编语言程序的开发过程。

2、内存操作数有哪几种寻址方式?用MOV 指令的源操作数举例进行说明。 3、简述汇编语言、高级语言、机器语言的区别。

4、简述汇编语言的指令语句和伪指令语句的区别。 5、汇编语言的标号代表什么?有哪三种属性?

6、汇编语言中变量的用哪条伪指令进行定义?有哪三种属性? 7、已知有如下定义的数据段:

DATA SEGMENT ORG 0100H TABLE DW 0FF00H DATA ENDS

试分别分析以下两条指令的执行结果?并指出区别。 8、有如下定义的变量: DATA SEGMENT

ARRAY DW 1000H,2000H,3000H,4000H,5000H BUF DW ? DATA ENDS

请分别完成以下操作:

将ARRAY的偏移地址送BX;将ARRAY的第一字节把内容送AL;

9、已知某数据段中有 COUNT1 EQU 16H COUNT2 DW 16H

下面两条指令有何异同点: MOV AX,COUNT1 MOV BX,COUNT2

10、某程序设置的数据区如下: DATA SEGMENT

DB1 DB 12H,34H,0,56H

DW1 DW 78H,90H,0AB46H,1234H ADR1 DW DB1 ADR2 DW DW1 AAA DW $-DB1 BUF DB 5 DUP(0) DATA ENDS

列出该数据段内容在内存中的存放形式(要求用十六进制补码表示,按字节组织)。

11、请用DEBUG调试软件的汇编命令,在DEBUG 下编写利用DOS功能2显示字符b的一段小程序,要求汇编到2060:100H开始的内存中。 12、什么是标号?什么是变量?

13、为了保证用户执行完程序能正常返回DOS,可以采用什么方法? 14、设数据段定义如下: ORG 0020H D1 DW 1234H D2 DB 32 DUP(?) CONT EQU $-D1

问D1,D2,CONT的值各为多少?它表示什么含义?

15、读下列指令,回答问题:X和Y的含义有什么不同?两条指令的作用有什么不同? X EQU 20H Y DB 50H ...

MOV AL,X MOV AH,Y

16、对于给定的数据定义,变量R1和R2的值分别是多少? DA1 DB 1,2,3,’ABC’ DA2 DW 0

R1 EQU DA2-DA1 K1 DW ?

K2 DB 6 DUP(?) K3 DD ? R2 EQU $-K1

17、设有三个变量VAR1,VAR2,VAR3,其内容VAR1=3C46H,VAR2=F678H,VAR3=0059H。设计一个数据段,定义这三个变量并赋以初值。 18、说明下面两条指令的区别:

MOV AX,VAR1 与 MOV AX,OFFSET VAR1 19、说明下面两条指令的异同:

MOV AX,OFFSET VAR1 与 LEA AX,VAR1

20、用三种不同大方法实现将1000H存入DA1字单元(可以用指令性语句或伪指令语句)。 五、分析程序题(共6题)

1、阅读程序,回答问题

BLOCK DB 20H,1FH,08H,81H,0FFH,… RES DB ? …

START: LEA SI,BLOCK MOV CX,[SI] INC SI

MOV AL,[SI] LOP1: CMP AL,[SI+1] JNG NEXT

MOV AL,[SI+1] NEXT: INC SI LOOP LOP1 MOV RES,AL HLT

(1)该程序的功能是什么?

(2)该程序的循环次数是多少次?

2、下列程序的功能是什么? DATA SEGMENT A DB 12H,34H

B DB 12H,34H DATA ENDS CODE SEGMNET

ASSUME DS:DATA,CS:CODE START :

MOV AX,DATA MOV DS,AX MOV SI,0 MOV AL,A[SI] ADD AL,B[SI] MOV A[SI],AL INC SI

MOV AL,A[SI] ADC AL,B[SI] MOV A[SI],AL MOV AH,4CH INT 21H CODE ENDS

END START

答:将内存单元中定义的两个变量A=3412H和B=3412H 相加,结果人存放在A中。

3、在下面程序的括号中,分别填入指令(1)LOOP LP (2)LOOPNE LP (3) LOOPE LP,分析在这三种情况下程序各执行多少次?程序执行完后,AX,BX,CX,DX中的内容是什么? CODE SEGMENT

ASSUME CS:CODE ORH 100H BEGIN: MOV AX,01 MOV BX,02 MOV DX,03 MOV CX,04 LP: INC AX ADD BX,AX SHR DX,1 ( ) MOV AH,4CH INT 21H CODE ENDS

END BEGIN

4、下面程序的功能是什么?DAT1单元的值是什么?DAT2单元的值是什么?

DAT1 DB 1AH,78H DAT2 DB 3CH,6BH DATA3 DW ? DATA3 DW ? …

MOV SI,OFFSET DAT1 LEA DI,DAT2 MOV AX,[SI CMP AX,[DI] JC DONE MOV BX,[DI] MOV [DI],AX MOV [SI],BX NODE: HLT

5、说明下面程序段完成的功能?程序执行后AL=? VAR DB -18,32,0,5,-51,19,’$” ...

MOV BX,OFFSET VAR MOV AL,[BX] MOV CX,5 NEXT: INC BX ADD AL,[BX] LOOP NEXT

6、阅读下面程序,找出其中存在的语法错误并修改:

DATA SEGMENT

A: DB 35,01000111B,24H,’XYZ’ B: DB N DUP(0) N: EQU $-A

ENDS CODE SEGMENT

START: MOV AX,DATA MOV DSMAX LEA SI,A LEA DI,B MOV CX,N LOP MOV AL,[SI] MOV [DI],AL INC SI INC DI LOOP LOP MOV AH,4CH INT 21H ENDS

END START

修改后说明程序的功能? 六、编程题(共15题)

1、从BUF地址处起,存放有100个字节的字符串,设其中有一个以上的A字符,编程查找

出第一个A字符相对起始地址的距离,并将其存入LEN单元。

2、试编制一程序,把CHAR1中各小写字母分别转换为对应的大写字母,并存放在CHAR2开始的内存单元中。

3、以BUF1和BUF2开头的两个字符串,其长度均为LEN,试编程实现:将BUF1开头的字符串传送到BUF2开始的内存空间。

4、试编写一程序,编程计算(A*B+C-70)/A,其中A、B、C均为字节变量。

5、 试编写一程序,将一组以BUF为首地址的N个8位无符号二进制数按递增顺序排列。 6、试编写一程序,找出BUF数据区中带符号数的最大数和最小数。 7、若AL中的内容为2位压缩的BCD数,即6AH,试编程:

(1)将其拆开成非压缩的BCD码,高低位分别存入BH和BL中。

(2)将上述已求出的2位BCD码变换成对应的ASCII码,并存入CH和CL中。

8、从键盘输入一个字符,判断该字符是小写字母、大写字母、数字或其他字符,并给出相应的提示信息。

9、编写一个程序,将内存1000H开始的100个字节送往2000H开始的100个字节内存单元中。

10、编程实现由键盘输入一个字符的ASCII码,并将其显示在屏幕上。

11、编写一个程序实现从键盘输入一个数字0-9,并通过查表的方式将其平方值送至AL中保存。

12、编程实现计算AX寄存器中‘1’的个数,将结果存在BL中。

13、已知数据段4000H开始有16个字类型数据,查找其中0的个数,将结果存放在BL中。 14、编程计算1至50的和。

15、编程实现显示BX寄存器的最高位。

七、程序填空题(共6题)

1、下面程序是查找STRING中是否有“A”这个字符,如果有则转向YES去执行;没有则转向NO去执行。请将程序填充完整。

MOV CX,20 ;假设STRING的长度为20 MOV BX,-1 MOV AL,'A' NEXT:(1) BX

CMP AL,STRING[Bx] (2)NEXT JNZ (3) YES: .......

JMP (4) NO: ?? EXIT:RET

2、下列程序段是比较AX,BX,CX中带符号数的大小,将最大的数放在AX中。请将

程序填充完整。

CMP AX,BX ( )NEXT SCHG AX,BX

NEXT:( )AX,CX JGE OUT ( )AX,CX OUT:

3、假设x和x+2单元的内容为双精度数P,Y和Y+2单元的内容为双精度数Q

(X,Y为低位数),下列程序段使2P>Q时,(AX)=1;2P<=Q时,(AX)=2。请把程序填 写完整。

MOV DX,X+2 MOV AX,X ADD AX,X ADC DX,X+2 CMP DX,Y十2 (1) L2 (2) L1 CMP AX,Y (3) L2

L1:MDV AX,1 JMP EXIT

L2:MOV AX,2 EXIT:INT 20H

4、下面程序的功能是:求内存中一个字符串STAR1(不含空格)的长度,存入LEN单元,并将滤去所有空格后的字符串存入STR2。该字符串以‘#’结束。 DATA SEGMENT LEN DB ? STR1 DB ‘BHDAIUI HKJSIDASIJ KNJ#’ STR2 DB 50 DUP(?) DATA ENDS CODE SEGMENT ASSUME DS:DATA,CS:CODE START: MOV AX,DATA MOV DS,AX LEA BX,STR1 LEA SI,STR2 MOV CL,0 LP1: MOV AL,[BX] INC BX CMP AL,20H ( 1 ) LP2: CMP AL,’#’

(2) MOV [SI],AL INC SI INC CL MOV AL,[BX] INC BX (3)

DONE: MOV LEN,CL MOV AH,4CH INT 21H CODE ENDS END START

5、下面程序的功能是求数组DA1的平均值存入DA2,数组长度放在DA1单元中。将程序补充完整。 DATA SEGMENT DA1 DB 10,45,56,89,100,74,36,95,43,70,44 DA2 DB ? DATA ENDS CODE SEGMENT ASSUME DS:DATA,CS:CODE START: MOV AX,DATA MOV DS,AX LEA BX,DA1 (1) MOV CL,[BX] INC BX

LOP0: ADD AL,[BX] ADC AH,0 (2) DEC CL JNZ LOP0 LEA BX,DA1 MOV CL,[BX] DIV CL (3) MOV AH,4CH INT 21H

CODE ENDS END START

6、下面程序的功能是在内存缓冲区存放了星期一到星期日的英文缩写(3个字母),用DOS

系统功能调用实现从键盘输入一个0-7的数字,查找出相应的英文缩写,并用2号DOS系统功能调用将其在屏幕显示出来。在空白处填上适当指令,完善程序。 DATA SEGMENT

WEEK DB ‘MON’,’TUE’,’WED’,’THU’,’FRT’,’SAT’,’SUN’ DATA ENDS

CODE SEGMENT

ASSUME DS:DATD,CS:CODE START: MOV AX,DATA MOV DS,AX MOV AH, (1) INT 21H SUB AL,30H MOV CL,3 MUL CL MOV BL,AL MOV BH,0 MOV CL,3 LP1: MOV DL,(2) MOV AH,02H INT 21H (3)

DEC CL JNZ LP1

MOV AH,4CH INT 21H CODE ENDS

END START

本文来源:https://www.bwwdw.com/article/qdpf.html

Top