汇编习题102

更新时间:2023-10-08 09:23:01 阅读量: 综合文库 文档下载

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

汇编语言程序设计复习题

选择题(部分习题应多选)

1、汇编语言源程序经汇编后不能直接生成 (1) 。

(A).OBJ文件 (B).LST文件 (C).EXE文件 (D).CRF文件 2、运算型指令的寻址和转移型指令的寻址,其不同点在于 (2) 。

(A) 前者取操作数,后者决定程序的转移地址 (B) 后者取操作数,前者决定程序的转移地址 (C) 两者都是取操作数 (D) 两者都是决定程序的转移地址 3、JMP WORD PTR [DI]是 (3) 。

(A)段内间接转移 (B)段间间接转移 (C)段内直接转移 (D)段间直接转移

4、JMP FAR PTR ABCD(ABCD是符号地址)是(4) 。

(A)段内间接转移 (B)段间间接转移 (C)段内直接转移 (D)段间直接转移 5、INC指令不影响(5) 标志。

(A)OF (B)CF (C)SF (D)ZF

6、条件转移指令JNE的测试条件是(6) 。

(A)OF (B)CF (C)SF (D)ZF 7、逻辑移位指令SHL用于(7) ;

(A)带符号数乘2 (B)带符号数除2 (C)无符号数乘2 (D)无符号数除2 而算术移位指令SAL用于(8) 。

(A)带符号数乘2 (B)带符号数除2 (C)无符号数乘2 (D)无符号数除2 8、下列程序执行后,请选择正确的结果:

10A3H: 2000H XOR AL,AL 2002H MOV AX,CS 2004H MOV SS,AX 2006H MOV SP,2F00H 2009H MOV DX,2012H 200CH PUSH DX 200DH CALL 2700H 2010H ADD CX,DX 2012H HLT 10A3H: 2700H POP CX RET 8.1、(AX)=(9) ; (A)10A3H (B)2000H (C)2012H (D)2799H 8.2、(SP)=(10) ; (A)2F02H (B)2F00H (C)2EFEH (D)2EFCH 8.3、(DX)=(11) ; (A)2700H (B)2F00H (C)2012H (D)2010H 8.4、(CX)=(12) ; (A)2700H (B)2F00H (C)2010H (D)4024H 8.5、ZF=(13) ; (A)1 (B)0 (C)不定 (D)-1 10、对于下列程序段:

AGAIN: MOV ES:[DI],AL INC DI LOOP AGAIN

可用指令(16) 完成相同的功能。 (A)REP MOVSB (B)REP LODS (C)REP STOSB (D)REPE SCASB

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

(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,BL (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

12、ADD指令中,两个操作数的物理位置可以安排在(18) 中。 (A)两个主存单元 (B)一个主存单元和一个数据寄存器 (C) 两个数据寄存器(D)一个堆栈单元和一个数据寄存器 13、字变量ARRAY的偏移地址送寄存器BX的正确结果是(19)。

(A)LEA BX,ARRAY (B)MOV BX,OFFSET ARRAY (C)LES BX,ARRAY (D)MOV BX,ARRAY

1

14、将寄存器AX的内容求反的正确操作是(20) 。

(A)NEG AX (B)XOR AX,0FFFFH (C)NOT AX (D)CMP AX,AX

1、C 2、A3、A4、D5、B6、D7、C8、A 10、B11、C12、C 13、A14、A15、A16、C17、A、B18、B、C、D19、A、B20、B、C。

1、有汇编程序在汇编过程中执行的指令是(B) A.机器语言B.伪指令 C.状态标志D.物理地址

2、在汇编语言程序设计中,伪指令OFFSET的含义是回送变量或标号的(B)

A.段地址B.物理地址C.偏移地址D.操作数

3、求下面变量定义的元素个数送CX的正确形式是(D) ARRAY DW 1,9,9,9,12,1

A.MOV CX,LENGTH ARRAY B. MOV CX,SIZE ARRAY C.COUNT EQU $-ARRAY D. COUNT EQU ($-ARRAY)/2 MOV CX,COUNT MOV CX,COUNT

4、下列数值表达式和地址表达式中,错误的是(D) A. MOV AL,8*14+4 B.MOV SI,OFFSET BUF+13 C.MOV CX,NUM2-NUM1 D.MOV CX,NUM2+NUM2 (注:BUF、NUM1、NUM2是变量名)

5、使用LINK连接命令,执行后可生成文件的扩展名为(C)。 A. .COM B..OBJ C. .EXE D. .LST 6、有如下数据定义: OPR1 DB 23H,4AH OPR2 DW 342AH,258FH 则下列指令正确的是(C)。

A. MOV AX,OPR1 B.MOV DL,OFFSET OPR1 C. MOV AX,WORD PTR OPR1 D.MOV BL,OPR2 7、有如下数据定义: DA1 DW 274FH

DA2 EQU BYTE PTR DA1 DA3 EQU DA2+1 MOV AL,DA3

执行指令后。AL=(B)。

A. 50H B.27H C. 4FH D. 28H

8、编写分支程序,在进行条件判断前,可用指令构成条件,其中不能形成条件的指令是(D)。 A. CMP B.SUB C. AND D.MOV

9、下列指令序列测试BL中的数是否为奇数,若为奇数则转移至K1,横线处的指令应为(A)。 TEST BL,01H K1

A. JNE B.JZ C. JS D.JC 10、有如下程序段: MOV CX,6 MOV AX,1 MOV BX,3 LOP: ADD AX,BX ADD BX,2 LOOP LOP

上述指令完成后,AX=(B) A. 6 B. 49 C.50 D. 0 11、下列调用指令中,(C)属于段间间接调用。 A.CALL SUB1 B. CALL FAR PTR SUB1

C.CALL DWORD PTR[BX] D. CALL WORD PTR[BX][SI]

12、在多模块程序设计中,用(B)伪指令来声明公用变量。 A. EXTRN B. PUBLIC C.MODULE D. COMMON

13、在DOS的9号调用中,需要显示的字符串的地址在(A)。 A. DS:DX B. SS:DS C.DS:SI D. DS:DI 14、段内直接调用,程序的转移范围为(A)。

A. -128~127 B. -32768~32767 C.-65536~ 65535 D. 0~32767 15、子程序返回伪指令是(C)。

A. ENDP B. IRET C.RET D. 段内与段间不同

16、在执行串操作指令时,使地址按递增方式处理,应使用的指令是(A)。

A. CLD B. STD C.STI D. CLI

17、从键盘输入数据1,则在存储单元中存放的形式为(A)。 A. 31H B. 01H C.”1” D. ‘1’ 18、指令IRP重复执行语句的次数由(B)。 A. 表达式 B. 实参个数 C.字符串中字符个数 D. 不确定

19、每次宏调用时,宏体中程序段有些部分允许作适当的修改,所用的宏定义应(C)。

A. 不带参数 B. 进行宏展开 C.带参数 D. 不进行宏展开 20、宏调用时的参数传递是由汇编程序通过(C)实现的。 A. 寄存器 B. 堆栈 C.实参替换形参 D. 内存单元

21、可屏蔽中断就是它的请求是否被CPU响应要受(B)的控制。

安徽工程大学 计算机与信息学院xxd

汇编语言程序设计复习题

A. TF B. IF C.OF D. SF

22、中断发生过程和子程序调用过程的一个明显区别是中断发生时,CPU自动清除了(A)。

A. IF和TF位 B. TF位 C.IF和SF位 D. TF和SF位 1、假定(SS)=2000H,(SP)=0100H,(AX)=2107H,执行指令PUSH AX后,存放数据21H的物理地址是⑴ 。

(A)20102H (B)20101H (C)200FEH (D)200FFH 2、执行下列指令后:

MOV AX,1234H MOV CL,4 ROL AX,CL DEC AX MOV CX,4 MUL CX HLT

寄存器AH的值是⑵ , (1)(A)92H (B)8CH

(C)8DH (D)00H 寄存器AL的值是 ⑶ 。 (2)(A)60H (B)00H

(C)04H (D)A0H 3、执行完下列指令后:

STR1 DW ‘AB’

STR2 DB 16 DUP (?) CNT EQU $-STR1 MOV CX,CNT MOV AX,STR1 HLT

寄存器CL的值是⑷ , (A)10H (B)12H (C)0EH (D)0FH 寄存器AX的值是⑸ 。 (A)00ABH (B)00BAH (C)4142H (D)4241H

4、执行返回指令,退出中断服务程序,这时返回地址来自 ⑹ 。

(A)ROM区 (B)程序计数器

(C)堆栈区 (D)CPU的暂存寄存器 5、执行下列程序:

MOV AX,0 MOV BX,1 MOV CX,100

LAB1: ADD AX,BX INC BX LOOP LAB1 HLT

执行后的结果为(BX)=⑺ , (A)99 (B)100

(C)101 (D)102 (AX)=⑻ 。 (A)5000 (B)5050

(C)5100 (D)5150 6、对于下列程序段:

AGAIN: MOV AL,[SI] MOV ES:[DI],AL INC SI INC DI LOOP AGAIN

也可用指令 ⑼ 完成同样的功能。 (A)REP MOVSB (B)REP LODSB (C)REP STOSB (D)REPE SCASB 7、执行下列程序,选择正确的结果:

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

SP= ⑽ ;

(A)2000H (B)1FFFH (C)2001H (D)1FFEH DH内容所在存储器的偏移地址为 ⑾ ;

2

(A)1FFFH (B)1FFEH (C)1FFDH (D)1FFCH DL内容所在存储器的偏移地址为 ⑿ ;

(A)1FFFH (B)1FFEH (C)2000H (D)1FFDH AX= ⒀ ;

(A)0H (B)78H (C)0F0H (D)56H DI= ⒁ ;

(A)1234H (B)5678H (C)2000H (D)00F0H DX= ⒂ ;

(A)5678H (B)0ACF0H (C)2B3CH (D)0ABF0H 标志位CF= ⒃ ;

(A)0 (B)1 (C)不定

8、交换寄存器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

MOV SI,DI MOV BX,DI MOV DI,AX XCHG BX,AX

9、 完成41H送[2100H]、42H送[2101H]的正确程序段是 ⒅ 。

(A)MOV AL,41H (B)MOV SI,2100H MOV [2100H],AL MOV [SI],‘A’ INC AL INC SI MOV [2100H],AL MOV [SI],‘B’ (C)MOV AX,4241H (D)MOV AX,‘AB’

MOV [2100H],AX MOV [2100H],AX

10、(SP)=2800H,使(SP)=27FEH的正确指令是 ⒆ 。

(A)PUSH AX (B)MOV SP,27FEH (C)POP AX (D)MOV [SP],27FEH 11、REPNE/REPNZ指令的退出条件是 ⒇ 。

(A)(CX)=0 (B)ZF=0 (C)(CX)=1 (D)ZF=1

1、D2、C3、B4、B5、C6、C7、C8、B9、A10、D11、A12、B; 13、C14、A15、B16、A17、A、C18、B、C19、A、B20、A、D。 0、执行返回指令,退出中断服务程序,这时返回地址来自 (C) 。

(A)ROM区 (B)程序计数器 (C)堆栈区 (D)CPU的暂存寄存器 1. 汇编语言是 。

A.低级语言 B.中级语言 C.高级语言 D.机器语言 2. 十进制数-111的8位二进制补码为 。

A.10010001B B.11110110B C.01101111B D.11101111B 3. 微机系统中有哪些总线?

A.状态总线、数据总线、控制总线 B.地址总线、状态总线、控制总线

C.状态总线、数据总线、地址总线 D.数据总线、地址总线、控制总线

4. 下列有关段地址、偏移地址、物理地址的叙述正确的

是 。

A.若已知物理地址,则可以计算出唯一的段地址和偏移地址。 B.段的划分可以从任何一个存储单元开始。 C.8086规定段的大小必须为64K字节。 D.多个段可以共用某些存储单元。 5. 指令MOV BX, DS:[BP]中,源操作数所采用的寻址方式是 。

A.寄存器寻址 B.寄存器间接寻址 C.基址变址寻址 D.寄存器相对寻址 6. 有语句:COUNT EQU 256,下列四种叙述中,正确的是 。

A.COUNT是变量 B.COUNT是符号常数 C.COUNT占用一个字节的存储单元 D.COUNT占用二个字节的存储单元

7.设SP初值为2000H,执行指令\后,SP的值是 。

A.1FFFH B.1998H C.1FFEH D.2002H 8.设AL=20H,SI=0500H,DS=3000H,(30500H)=0C0H,CF=1。执行SBB AL,[SI]后, 正确的结果是 。

A.AL=5FH SF=1 CF=1 B.AL=60H SF=1 CF=0 C.AL=5FH SF=0 CF=1 D.AL=60H SF=0 CF=0 9.假设程序中的数据定义如下,则V4的值为 。

V1 DW ?

V2 DB 20 DUP(?)

安徽工程大学 计算机与信息学院xxd

汇编语言程序设计复习题

V3 DD ? V4 = $-V1

A.24 B.25 C.27 D.26

10.下面关于汇编语言中的宏的叙述正确的是 。

A.宏定义中的形参个数与宏调用中的实参个数必须相等。 B.宏的名字不能与指令的名字相同。

C.宏定义中的形参不能出现在指令的操作码部分。

D.宏定义中的形参个数与宏调用中的实参个数可以不相等,只要展开后得到的语句是合法的即可。

1.A 2.A 3.D 4.D 5.B 6.B 7.C 8.C 9.D 10.D

2. 运算型指令的寻址和转移型指令的寻址,其不同点在于(2)。 (A)前者取操作数,后者决定程序的转移地址 (B)后者取操作数,前者决定程序的转移地址 (C)两者都是取操作数

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

7. 不能将累加器AX的内容清0的指令是 (7) 。 (A)AND AX,0 (B)XOR AX,AX (C)SUB AX,AX (D)CMP AX,AX

8. 8086/8088响应中断时,不自动压入堆栈的有 (8) 。 (A)通用寄存器的内容 (B)CS的内容 (C)IP的内容 (D)标志寄存器的内容

9. MOV AX,WORD PTR[BX][SI]源操作数的寻址方式是 (9) 个。 (A)寄存器寻址 (B)基址变址寻址 (C)相对基址变址寻址 (D)直接寻址 2.A 7.D 8.A 9.B

1. 用DEBUG.EXE调试程序时,显示存储单元内容的命令是(1)。 (A) R (B) T (C) G (D) D

2. 下列指令中,源操作数在代码段中的是 (2) 。 (A)MOV AL, 80H (B)ADD AL, BL

(C)CMP AX, [1234] (D)AND AL, ES:[1234]

3. 下列指令中合法的是 (3) 。 (A)IN AL, 400 (B)MOV AL,BX (C)PUSH AL (D) SHL AX, CL 4. 8位有符号数的表示范围是 (4) 。 (A) 0~255 (B) —127~128 (C) —128~127 (D) —256~255

5. 汇编源程序中,END伪指令后的标号表示 (5) 。 (A)源程序的结束 (B) 代码段的结束 (C)汇编程序的入口地址 (D)该标号无任何意义 6. 设(SS)=3000H,(SP)=1000H,(AX)=1234H,执行PUSH AX后,存放34H的存储单元的物理地址是 (6) 。 (A)31001H (B)31002H (C)30FFEH (D)30FFFH 7. 将累加器AX的内容清0的错误指令是 (7) 。 (A)AND AX,0 (B)OR AX,AX (C)SUB AX,AX (D)XOR AX,AX 8. 不影响堆栈指针SP的指令是 (8) 。 (A)INT 21H (B) JMP DO (C) RET (D)PUSH AX

9. 设机器字长为8位,—63的补码用十六进制数表示是 (9) 。 (A) 0C1H (B)3FH (C) 0BFH (D)41H 10. 指令ADD AX,1与指令INC AX的区别是 (10) 。 (A)没有区别 (B)前者会将CF也加进来 (C)前者不影响CF (D)后者不影响CF (1)D (2) A (3) D (4)C (5)C (6)C (7)B (8)B (9) A (10)D

填空题

1、计算机中的指令由(1) 和(2) 两部分组成。 2、指出下列指令源操作数的寻址方式: MOV AX,ARRAY[SI] ;(3) MOV AX,ES:[BX] ;(4) MOV AX,[200H] ;(5) MOV AX,[BX+DI] ;(6) MOV AX,BX ;(7) MOV AX,1200H ;(8) MOV AX,20[BX+SI] ;(9) MOV AX,[DI+20] ;(10) 3、条件码中最主要的是(11) 。

4、对于乘法、除法指令,结果存放在(12) 或 (13) 中,而其源操作数可以用除(14) 以外的任一种寻址方式。 5、当指令“SUB AX,BX”执行后,CF=1,说明最高有效位(15) ;对 (16) 数,说明操作结果溢出。 6、下面两个语句的区别在于(17) 、 (18) 。

3

X1 EQU 1000H X2=1000H

7、指令“AND AX,STR1 AND STR2”中,STR1和STR2是两个已

赋值的变量,两个AND的区别是 (19) 、(20) 。 8、如果TABLE为数据段中0032单元的符号名,其中存放的内容

为1234H,当执行指令MOV AX,TABLE后,(AX)= (21) ;而执行指令LEA AX,TABLE后,则(AX)= (22) 。 9、近过程(NEAR)的RET指令把当前栈顶的一个字弹出到

(23) ;远过程(FAR)的RET指令弹出一个字到(24) 后又弹出一个字到 (25) ;IRET指令是(26) 指令,它

从堆栈顺序弹出3个字分别送到(27) 、 (28) 、(29) 中。

10、(30) 是过程定义结束伪指令,与(31) 配套使用。(32)

是段定义结束伪指令,与(33) 配套使用。(34) 是一个源模块汇编结束伪指令。 12、执行下列指令序列后,完成的功能是将(DX,AX)的值 (41) 。 MOV CL,04 SHL DX,CL MOV BL,AH SHL AX,CL SHR BL,CL OR DL,BL

13、某程序的数据段定义如下,请填写完整。 DATA SEGMENT

TAB DB ‘MICROSOFT’ DB ‘MS-DOS 6.22’ DW 1234

DB ‘IBM PS/2’

TABLE EQU (42) ;数据长度 DATA ENDS

14、分析以下程序段:

ADD AX,BX JNO L1 JNC L2 SUB AX,BX JNC L3 JNO L4

JMP SHORT L5

如果AX和BX的内容给定如下:

AX BX

(1)147B 80DC (2)B568 54B7 (3)42C8 608D (4)D023 9FD0 (5)94B7 B568 该程序执行后,程序转向(43)、 (44)、 (45)、 (46)、 (47)、 。 15、指令CALL可分为(48) 、(49) 、(50) 、(51) 。 16、带符号的机器数可以用原码、反码和补码三种不同码制来表示,其中补码表示法最为常见。

17、对于二进制10010101,若将其看作是无符号数和补码表示的有符号数,它对应的十进制真值分别为149和-107。

18、ASCII码是IBM-PC输入输出时采用的编码,ASCII的中文意思是美国信息交换标准代码,标准的ASCII码用8位二进制数来表示。

19、用指令的助记符、符号地址、标号和伪指令、宏指令等书写的程序称为汇编语言,将汇编语言的源程序翻译成机器语言的程序为汇编程序。 20、8086CPU由BIU(总线接口单元)和EU(执行单元)两部分构成。 21、Intel 8086CPU内部共有14个16位寄存器,有20根地址线,可直接寻址的空间为1MB,用于访问外部设备的I/O端口地址空间为64KB。

22、查看运算结果是否溢出的寄存器是标志寄存器的OF位。 23、我们把与内存一一对应的用20位二进制数(或5位16进制数)表示的地址称为物理地址,它的计算公式为物理地址=16*段地址+偏移地址。

24、在段加偏移地址的寻址中,如果段寄存器为CS,则相应的偏移地址应由IP寄存器来提供。

25、8086/8088系列CPU在存储器中寻找存储单元时,逻辑地址由段地址和偏移地址组成。

26、设(SS)=00A8H,(SP)=000CH,POP BX指令执行之后,栈顶的物理地址是00A8EH。 27、在DEBUG上机调试程序时,存储器的地址表示为2F00:1400,则该单元的段地址为2F00H,偏移地址为1400H,物理地址为 30400H。

28、方向标志DF的作用是用来在串操作指令中控制自增和自减的方向,用于设置或消除该标志位的指令是STD和CLD,。 29、已知:

安徽工程大学 计算机与信息学院xxd

汇编语言程序设计复习题

(DS)=15F0H,(ES)=25F0H,(SS)=35F0H,(BX)=0670H,(SI)=1001HMOV AX,1100[BX] ;(AX)= ⒃ ,(DI)=0B0H,(BP)=0150H,BUF的偏移地址是0900H。 MOV AX,[BX][SI] ;(AX)= ⒄ 计算下列指令源操作数的物理地址,指出寻址方式: MOV AX,1100[BX+SI} ;(AX)= ⒅ (1) MOV AX,BUF[BP+6] 8、下面两条指令执行后: 采用寄存器相对寻址方式,物理地址为56956h 。 MOV AH,10H (2) CMP AX,ES:[SI] MOV AL,10 采用寄存器间接寻址方式,物理地址为 26F01H 。 (AH)= ⒆ ,(AL)= ⒇ 。 (3) MOV CX,BUF 9、在汇编语言中,一个过程有NEAR和FAR两种属性。NEAR属采用直接寻址方式,物理地址为 16800H 。 性表明主程序和子程序 (21) ,FAR属性表示主程序(4) MOV AX,ES:[BX+SI] 和子程序 (22) 。 采用基址变址寻址方式,物理地址为 27571H 。 10、指令SAR可用来 (23) 除2,而指令SHR则可用来 (24) (5) DEC BUF[DI] 除2。 采用寄存器相对寻址方式,物理地址为 168B0H 。 11、子程序又称为 (25) ,由伪操作 (26) 定义,由 (27) (6) MOV AX,BUF[BX+DI] 结束,属性可以是 (28) 或 (29) 。 采用相对基址变址寻址方式,物理地址为 16620H 。 13、假设(DS)=2000H,(BX)=1256H,(SI)=528FH,位移量30、指令中用来指出指令在程序中位置的符号地址是 。 TABLE=20A1H,(232F7H)=3280H,(264E5H)=2450H,则执行31、变量和标号的三个属性为段属性、偏移属性、类型属性。 下列指令后(IP)的值: 通常的汇编语言开发环境都包含四部分,它们分别是编辑器、 JMP BX ;(IP)= (36) 汇编程序、连接程序和调试程序。 JMP TABLE[BX] ;(IP)= (37) 32、在指令系统中,段内段间的返回指令均为RET。当执行段内 JMP [BX][SI] ;(IP)= (38) 返回RET指令时,执行的操作是从栈顶弹出一个字内容,送入14、在1000H单元中有一条二字节指令JMP SHORT LAB,如果其IP;当执行段间返回RET指令时,执行的操作是从栈顶弹出两中偏移量分别为30H,6CH,0B8H,则转向地址LAB的值分别为 个字内容,分别送入IP和CS。 (39)、 (40) 、 (41) 。 33、使用DOS功能调用终止当前程序返回DOS 应选用的指令是 1、堆栈2、恢复3、05AEH4、4000H5、4154H6、6F30H7、20 MOV AH,4CH 8、30 9、7E814H10、立即寻址方式 11、直接寻址方式 12、INT 21H。 1200H 13、0100H 14、4C2AH 15、3412H 16、4C2AH 34、在使用串操作指令时,源串必须在数据段中,目的串必须17、7856H 18、65B7H 19、00010000B,即10H 20、(AL)在附加段中,源串作数和目的操作数不允许使用段超越。 =00001010B,即0AH 21、在同一代码段中 22、不在同一代35、CPU是通过I/O指令来实现与外部设备进行数据传送的。 码段中23、对带符号数24、对无符号数25、过程26、PROC 27、36、内中断有三类中断源,分别为INT n、CPU出错、为调试程ENDP 28、NEAR 29、FAR 36、1256H 37、3280H 序设置的断点。 38、2450H 39、1032H 40、106EH 41、10BAH 37、中断过程可分为四个步骤:中断请求、中断响应、中断处1、计算机内表示机器数的常用码制表示法有 理、中断返回。 ⑴ 、 、 。 38、执行IRET指令时,会依次将IP、CS、FLAGS弹出栈。 2、汇编语言是一种 ⑵ ,它用 ⑶ 来表示操39、80X86中断命令寄存器的I/O端口地址为20H,中断屏蔽寄作码,用 ⑷ 或 ⑸ 来表示操作数或操作数存器的I/O端口地址为21H。 地址,它于 ⑹ 是一一对应的。 40、可用DOS功能调用的功能号为AH=25H来设置中断向量,用3、在程序运行过程中,IP始终指向 ⑺ ,它与 ⑻ 。 功能号AH=35H来获取中断向量。 4、外部设备与主机的通信是通过外设接口进行的,接口寄存器(1)操作码字段(2)操作数字段(3)寄存器相对寻址方式(4)根据用途可以分为 ⑼ , ⑽ , ⑾ 。 寄存器间接寻址方式(5)直接寻址方式(6)基址变址寻址方5、指令中所用到的操作数可以是 ⑿ 、⒀和⒁ 操作数。 式(7)寄存器寻址方式(8)立即寻址方式(9)相对基址变址6、条件转移指令分为⒂ 、⒃ 、⒄ 、⒅ 。 寻址方式(10)寄存器相对寻址方式(11)CF、ZF、SF、OF。8、试根据以下要求写出相应的汇编语言指令。 (12)AX(13)DX、AX(14)立即数(15)向高位无进位或①用寄存器BX和SI的基址变址寻址方式把存储器中的一个字有借位(16)无符号数(17)X1不能多次被赋值(18)X2可节与AL寄存器的内容相加,并把结果送到AL寄存器中。汇编以多次赋值(19)第一个AND是逻辑与(20)第二个AND是语言指令: (21) 。 逻辑与操作符。(21)1234H(22)0032H(23)IP;(24)IP(25)②用BX寄存器和位移量0B2H的寄存器相对寻址方式把寄存器CS(26)中断返回(27)IP(28)CS(29)标志寄存器FLAGS中的一个字和CX寄存器的内容相加,并把结果送回存储器中。(30)ENDP(31)PROC(32)ENDS(33)SEGMENT(34)汇编语言指令: (22) 。 END (41)左移4位(42)$-TAB (43)L1(44)L1(45)9、在执行XLAT指令时,要将表首址存放在 (23) 中,将L2(46)L3(47)L4(48)段内直接调用(49)段内间接调用偏移地址存放在 (24) 。 (50)段间直接调用(51)段间间接调用。 10、若被乘数存放在AX中,乘数存放在BX中,执行指令IMUL 1、在标准子程序中,它所使用的工作寄存器一般要存入 ⑴ 保BX后,其乘积存放在 (25) 中。

存,在返回调用程序之前,再 ⑵ 它们的内容。 11、可用DOS功能调用INT 21H的功能号= (26) 来设2、假设(DS)=B000H,(BX)=080AH,(0B080AH)=05AEH, 置中断向量,用功能号AH= (27) 来获取中断向量。 (0B08CH)=4000H,当执行指令LES DI,[BX]后,(DI)=⑶ ,ES)=⑷。 12、下面两个语句的区别在于 (28) 。 3、对于指令XCHG BX,[BP+SI],如果指令执行前,(BX)=6F30H, X1 EQU 1000H

(BP)=0200H,(SI)=0046H,(SS)=2F00H,(2F246H)=4154H, X2=1000H 则指令执行后:(BX)= ⑸ ,(2F246H)= ⑹ 。 13、指令只可存放在 (29) 段中。 4、对于指令:MOV BX,((PORT_VAL LT 5) AND 20) OR ((PORT_VAL 14、宏定义体包括实现子功能的指令和伪操作,如果宏定义体

GE 5 ) AND 30)则当PORT_VAL<5时,汇编结果为:MOV BX, ⑺ 中有一个或多个标号,则必须用 (30) 伪操作列出所有的否则,汇编结果为:MOV BX, ⑻ 标号。 5、一个有16个字的数据区,它的起始地址为70A0:DDF6,那(1)原码、补码、反码;

么该数据区的最后一个字单元的物理地址为 ⑼ 。 (2)符号语言; (3)助记符; (4)符号; 6、在数据段中有以下定义: (5)符号地址; (6)机器指令; ARRAY1 EQU 16H (7)下一条要执行指令的首地址; ARRAY2 DW 16H (8)CS寄存器组合形成20位的物理地址; 请指出下列指令的寻址方式: (9)控制寄存器; (10)状态寄存器; MOV AX,ARRAY1 ; ⑽ (11)数据寄存器; (12)寄存器; MOV AX,ARRAY2 ; ⑾ (13)存储器; (14)立即数; 7、现有(DS)=2000H,(BX)=100H,(SI)=0002H,(20100H)(15)根据单个条件标志的转移; =12H,(20101H)=34H,(20102H)=56H,(20103H)=78H,(21200H)(16)比较两个无符号数,并根据结果转移; =2AH,(21201H)=4CH,(21202H)=B7H,(21203H)=65H,下列(17)比较两个有符号数,并根据结果转移; 指令执行后填入AX寄存器的内容: (18)测试CX的值为0则转移;

MOV AX,1200H ;(AX)= ⑿ (21)ADD AL,[BX][SI]; MOV AX,BX ;(AX)= ⒀ (22)ADD 0B52H[BX],CX; MOV AX,[1200H] ;(AX)= ⒁ (23)BX寄存器;(24)AL寄存器中; MOV AX,[BX] ;(AX)= ⒂ (25)DX:AX; (26)25H; (27)35H;

4

安徽工程大学 计算机与信息学院xxd

汇编语言程序设计复习题

(28)X1不能多次赋值,X2可以多次赋值; (29)代码; (30)LOCAL;

1、 汇编语言指令通常由两部分组成。前面一部分指出计算机

所要执行的操作,称为 ⑴ 部分,后一部分指出指令所加工处理的对象,称为 ⑵ 部分。

2、 数据寄存器包括 ⑶ 四个通用寄存器,但它们又有各

自的专门用途,其中, ⑷ 可用作累加器, ⑸ 可用作基址寄存器, ⑹ 可用作循环和串处理中的隐含计数器, ⑺ 在某些I/O操作中,可用来存放I/O端口地址。

3、 8086/8088CPU的I/O空间可有 ⑻ 个端口地址,端口地

址的范围是 ⑼ 。

4、 在基址变址寻址方式中,可用于基址的寄存器是

(10) 、 (11) ;其中 (12) 默认是相对于SS段寻址的。

5、 PC机I/O设备的数据传送方式共有三种,分别是

(13) , (14) , (15) 。

6、 当键盘中断发生时,CPU能否响应由两个条件控制,一是

(16) ; (17) 。

13、条件转移指令的目标地址应在本条件转移指令的下一条指令地址的 (26)个字节范围内。

14、假设(SP)=0100H,(SS)=2000H,执行PUSH BP指令后,栈顶的物理地址是 (27) 。

20、PC机BIOS显示的中断类型号为10H,它在中断向量表中的物理地址为 (28) 。

23、过程的属性有 (29) 和 (30) 。 (1)操作码,(2)操作数,(3)AX,BX,CX,DX,(4)AX,(5)BX,(6)CX,(7)DX,(8)64K,(9)0000H~0FFFFH,(10)BX 、(11)BP,(12)BP,(13)查询 ,(14)中断 ,(15)DMA,(16)中断是否允许,(17)当前中断级别是否比键盘中断级别高,(26)-128~127 ,(27)200FEH,(28)00040H ,(29)NEAR ,(30)FAR。

1. 假设某程序执行前(CS)=0B234H,(IP)=5678H,则该

程序的第一条指令的物理地址是 (1) ,若第一条指令对应的机器码占3个字节,则第二条指令的物理地址是 (2) 。

2. 设有如下数据定义:

V1 DW 30 DUP(?) V2 DB ‘XYZ’

则分别执行MOV AX, SIZE V1和MOV AX, LENGTH V2后,AX的值分别是 (7) 和 (8) 。

3. 带重复前缀的串操作指令在执行之前,除了初始化循环记

数器CX外,还应做 (9) 、 (10) 、 (11) 三项准备工作。

4. 若物理地址为0003CH的单元开始存放的双字为

10002000H,00060H单元开始存放的双字为为30004000H,则类型为15(十进制数)的中断向量的起始地址为 (12) ,中断服务程序的入口地址(物理地址)为 (13) 。 5. 在用MASM 5.0的DEBUG调试程序时,查看存储单元内容的

命令为 (14) ,让程序从当前位置执行到指定位置的命令是 (15) 。

6. I/O设备的接口中一般包含 (16) 、 (17) 、

(18) 三种端口。

7.对于DOS系统功能调用(INT 21H),所有的功能号必须放在 (19) 中,若要输出一个字符串到显示器,则字符串的首地址应放在 (20) 中。 1. 0B79B8H 0B79BBH 2. 60 1 3. SI指向源串首地址 DI指向目的串首地址 设置DF 4. 3CH或60 12000H 5. D G 6. 数据 状态 控制 7. AH DX 1、XLAT称作 (9) 指令,该指令在执行之前,应做(10) 、 (11) 两项准备工作。

2、若物理地址为00038H的单元开始存放的双字为20001000H,

00056H单元开始存放的双字为40003000H,则类型为14(十进制数)的中断向量的起始地址为 (12) ,中断服务程序的入口地址(物理地址)为 (13) 。

3、 在用MASM 5.0的DEBUG调试程序时,查看寄存器内容的命

令为 (14) ,让程序仅执行当前IP所指的一条指令的命令是 (15) 。

4、 对于DOS系统功能调用(INT 21H),所有的功能号必须放

在 (19) 中,当要输出一个字符到显示器时,该字

5

符的ASCII码应存放在 (20) 中。

1. 查表或换码或翻译 待查存储单元相对于表首地址的位移量存入AL

待查表首地址存入BX 2. 38H或56 21000H 3. R T 4. AH DL

1.汇编程序中的名字项可以分为(1) 和 (2),它们都有 (3)、(4) 和类型三种属性。

3.汇编语言的语句分成 (13) 、 (14) 和宏指令三类。

4.计算机的指令由 (15) 和 (16) 构成,它们分别给出计算机 (17) 和 (18) 。

5.8088/8086CPU的存储器采用分段方式管理,每个段最多可以有 (19) 字节,全部存储空间可以分成 (20) 个大小为64K且互相不重叠的段。

1. (1)变量 (2)标号 (3)段地址 (4) 偏移地址 3. (13)指令 (14) 伪指令 4. (15)操作码 (16)操作数 (17) 要执行的操作 (18) 操作的对象 5. (19) 216 (20) 16

2、I/O接口中包含 (5) 、 (6) 、 (7) 三种端口。8086最多支持 (8) 个端口,每个端口可存放 (9) 位数据。当端口号大于 (10) 时,要用 (11) 存放端口号。若数据由外部设备送至CPU,则使用的是 (12) 指令。 3、 编写完汇编语言源程序后,一般要经过 (13) 、连接、 (14) 三个步骤,才能验证程序的正确性。

4、 8086中包含一些具有特殊用途的寄存器,其中 (15) 存放着下一条即将执行的指令的偏移地址, (16) 是堆栈指针寄存器, (17) 常用作循环的计数器, (18) 用来存放数据段的首地址。

5、 8086CPU由 (19) 和 (20) 两个部分构成。

2. (5)数据 (6)状态 (7)控制 (8)64K (9)8 (10)255 (11)DX (12)IN 3. (13)编译/汇编 (14) 调试 4. (15)IP (16)SP (17) CX (18) DS 5. (19) 执行部件 (20) 总线接口部件

判断题

1、JMP SHORT NEXT是近跳转。 (⑴ ) 2、段内转移要改变IP、CS的值。 (⑵ ) 3、条件转移指令只能使用段内直接短跳转。 (⑶ ) 4、立即寻址方式不能用于目的操作数。 (⑷ ) 5、不能给段寄存器进行立即数方式赋值。 (⑸ ) 6、JMP [CX],BYTE PTR STR+1。 (⑹ ) 7、MOV DI,OFFSET [BX][SI]。 (⑺ )OFFSET Variable或label;offset后面只能跟变量名或标号 8、LEA DI,[BX][SI]; (⑻ ) 9、PUSH AL; (⑼ ) 10、SHL AX,3; (⑽ ) 11、MUL AX,BX; (⑾ ) 12、LEA DS,35[DI]; (⑿ )非法使用段寄存器 13、MOV STR[BX][DI],ES:AX; (⒀ ) 14、MOV [BX][BP],AX; (⒁ ) 15、ADD AX,ACH; (⒂ )

1(F)2(F)3(T)4(T)5(T)6(F)7(F)8(T)9(F)10(F)11(F)12(F)13(F)14(F)15(F) 1、MOV指令会影响标志位。 ( ⑴ ) 2、SP的内容可以不指向堆栈的栈顶。(⑵ )

3、CF位可以用来表示无符号数溢出,OF位可以用来表示有符号数溢出。 (⑶ )

4、DIV SRC执行字节除法时,商存放在(AL)中,而余数存放在(AH)中。 ( ⑷ ) 5、LODSB指令执行的操作为:((DI))←(AL),(DI)←(DI)+1或(DI)←(DI)-1。 (⑸ )

6、关系操作符EQ、NE、LT、GT、LE、GE的计算结果为逻辑值,0FFFFH表示为真,0表示为假。 (⑹ ) 7、逻辑操作符AND、OR XOR和NOT,只能用于数字表达式。(⑺ ) 8、MOV CS,BX; (⑻ ) 9、POP CS; (⑼ ) 10、PUSH WORD PTR 20[BX+SI-2]; (⑽ ) 11、LEA BX,4[BX]; (⑾) 12、JMP BYTE PTR [SI]; (⑿ ) 13、MOV BYTE PTR [BX],1000; (⒀ ) 14、MOV AX,[SI][DI]; (⒁) 15、MOV SAVE_WORD,DS; (⒂ )

安徽工程大学 计算机与信息学院xxd

汇编语言程序设计复习题

1、F 2、F 3、T 4、T 5、F 6、T 7、T 8、F 9、F 10、T 11、T 12、F 13、F 14、F 15、T

1、JMP SHORT lab是近跳转。 (⑴ ) 2、段内转移要改变IP、CS的值。 (⑵ ) 3、条件转移指令只能使用段内直接短跳转。 (⑶ ) 4、立即寻址方式不能用于目的操作数。 (⑷ ) 5、不能给段寄存器进行立即数方式赋值。 (⑸ ) 6、MOV [CX],BYTE PTR STR+1。 (⑹ ) 7、MOV DI,OFFSET [BX][SI]。 (⑺ ) 8、LEA DI,[BX][SI]; (⑻ ) 10、SHL AX,3; (⑽ ) 11、MUL AX,BX; (⑾ ) 12、LEA DS,35[DI]; (⑿ ) 15、ADD AX,ACH; (⒂ )

17、CF位可以用来表示无符号数溢出,OF位可以用来表示有符号数溢出。 (⒄ )

20、关系操作符EQ、NE、LT、GT、LE、GE的计算结果为逻辑值,0FFFFH表示为真,0表示为假。 (⒇ ) ⑴F ⑵F ⑶T ⑷T ⑸T ⑹F ⑺F ⑻T⑽F ⑾F ⑿F ⒂F ⒄F ⒇F

1、POP CS 2、JMP BYTE PTR[BX] 3、ADD BX,OFFSET A ;A为DB定义的变量 4、IN AX,3F0H 5、MOV AX,[BX][BP] 6、MOV BYTE PTR [BX],1000 7、CMP 15,CX 8、MOV VAL[BX+4*5][DI],SP ;VAL是DW定义的变量 9、MOV AX,VAL[DX] ;VAL是DW定义的变量 10、MOV VAL,DS ;VAL是DW定义的变量 11、JLE FAR PTR LAB ;LAB是一个语句的标号 12、CALL AX 13、MOV DS,2000H 14、INC [BX] 15、ADD AX,1指令与INC AX指令都执行(AX)=(AX)+1的操作,两者完全可以相互替代。

(1F) (2F) (3T) (4F) (5F) (6F) (7F)(8T)(9F) (10T) (11F) (12T) (13F) (14F)(15F)

1、TEST AL,00000100B 2、RCR [BX+SI],CX 3、DIV 10H 4、REP MOVS ES:WORD PTR [DI],DS:[SI] 5、MOV DS,[BP+DI] 6、MOV ES,0 7、JMP DWORD PTR[BX+SI] 8、MOV CL,HIGH VAL ;VAL是DW定义的变量 9、MOV AX,WORDA中源操作数是直接寻址(WORDA是字变量符号地址)。

10、硬中断处理程序是可使用INT指令来调用执行的。 11、END LAB语句指示本程序执行到标号LAB处则结束。 13、同一个文件中不允许出现相同的子程序名。 14、定义在代码段C中的类型属性为FAR的过程只能在代码段C之外调用。 15、ADD X,Y ;X,Y是DB定义的变量。 (1)T ,(2)F ,(3)F ,(4)T ,(5)T ,(6)F ,(7)T ,(8)T ,(9)T ,(10)T ,(11)F ,(13)T ,(14)F ,(15)F

简答题

1、 8086具有哪些程序可见的寄存器,它们在程序设计中分别

起什么作用?

2、 在8086/8088微处理器在实模式下,存储器寻址为什么要

分段?举例说明存储单元的物理地址是如何形成的? 3、 设AX=1234H,BX=5678H,CX=8901H,SI=100H,SP的初始

值=01A0H,问执行下述堆栈操作指令序列 PUSH CX PUSH AX PUSH BX ?? POP CX POP SI 后,SP和SI的值等于多少? 4、 调用指令CALL可以分为哪几种?

6

5、解释地址传送指令“LES DX,BUF[BX][DI]”的功能? 1、具有通用寄存器、专用寄存器和段寄存器3类。通用寄存器都是16位寄存器,其中AX、BX、CX、DX可称为数据寄存器,用来暂时存放计算过程中所用到的操作数、结果或其他信息。AX一般作为累加器、BX在计算存储器地址时,经常用作基址寄存器。CX常用来保存计数值。DX一般在作双字长运算时和AX寄存器组合在一起存放双字长数,DX用来存放高位字,对某些I/O操作,DX可用来存放I/O的端口地址。SP、BP、SI、DI四个16位寄存器可以象数据寄存器一样在运算过程中存放操作数,此外它们经常用在存储器寻址时,提供偏移地址。SP作为堆栈指针寄存器、BP作为基址指针寄存器、SI作为源变址寄存器、DI作为目的变址寄存器;专用寄存器:IP为指令指针寄存器,始终指向下一条指令的首地址。FLAGS为标志寄存器,用来存放条件码、控制标志和系统标志寄存器。

2、在8086/8088中,寄存器只有16位,而地址线却有20位,故其最大寻址空间是1M。用存储器分段的方法,解决在16位字长的机器里提供20位地址的问题。在实模式下编程时,将存储器划分成段,每个段内的大小可达64KB,这样段内地址可用16位表示,实际上,可以根据需要决定段的大小。这样将每一段的起始地址作为段地址,而将在段内相对于段起始地址的偏移值作为偏移地址,于是将段地址左移4位,再加上偏移地址就形成了存储器实际的物理地址。如某存储单元的段地址和偏移地址为3017:000A,则其物理地址=3017H*10H+000AH=3017AH。 3、SP和SI的值分别等于19EH和1234H。

4、调用指令CALL可分为段内直接调用、段内间接调用、段间直接调用、段间间接调用。

5、将有效地址为BUF+[BX]+[DI]字存储单元的内容送DX寄存器,然后将有效地址为BUF+[BX]+[DI]+2的字存储单元的内容送ES寄存器。

6、8086CPU是由EU和BIG组成,各部分的功能是什么?这样设计的优点是什么?

BIU主要功能是负责CPU与主存和I/O之间的信息传递。EU的功能主要是控制和执行指令。取指和执行指令这两个步骤由两个独立的部件来完成。当EU执行某条指令时,BIU同时完成从主存中预取后继指令,两个部件并行工作,提高了指令的执行速度。

7、说明PUSH BX指令的执行过程,假设SP=0100H,SS=0200H,确切地指出BH和BL存储在哪里? PUSH BX指令执行后,SP=SP-2,BH和BL分别存放在099H和098H中,SP指向098H单元

8、简述指令MOV BX,DATA和MOV BX,OFFSET DATA之间的区别? 9、强制属性操作符会改变变量的定义属性吗? 不会,它们只是临时改变变量的属性。

10、简述数值表达式和地址表达式的主要区别?

数值表达式和地址表达式都可以用于算术运算中,数值表达式对任何运算都有意义,而地址表达式要看运算的物理意义,如地址表达式的香煎有意义,而相加就没有意义了。

10、编写分支程序一般要用一些指令设置相关标志位,然后进行条件判断,利用条件控制转移指令控制程序转移,通常可以用那些指令来设置标志位?这些指令有什么特点?

答:在使用条件转移指令前,通常是由一些算术运算、逻辑运算或某些比较、测试指令的执行结果设置相关标志位,这些指令的特点是可以影响某些标志位。

11、子程序返回指令“RET 6”的功能是什么?通常在什么情况下要用到带立即数的子程序返回?

答:在返回断点后,再从堆栈弹出6个字节的数据。立即数通常是偶数,主要用于通过堆栈传递参数时去掉堆栈中一些无用的数据。

12、在程序模块中,伪指令PUBLIC和EXTRN的作用是什么? 答:在模块化程序设计中,PUBLIC用来声明公共变量,EXTRN用来声明引用的外部变量。

13、简述宏和子程序的区别和联系? 答:联系:(1)都可以将程序中的程序段定义成一个能用过程名或宏名表示的实体。(2)都用一个名字调用。(3)都可以带参数。 区别:(1)宏在调用时进行宏展开,其代码实体的重复次数与宏调用次数有关;子程序的代码实体在程序中只出现一次。(2)宏调用不会增加CALL、RET指令,子程序的调用则需要。(3)宏的执行效率高;子程序占用空间相对少。

14、局部符号伪指令LOCAL有何作用?其使用有什么要求? 答:程序中用LOCAL伪指令是为了避免同一变量名或标号多次被宏调用时,产生多个相同的变量名或标号,出现汇编错误。LOCAL伪指令只能用在宏定义体中,必须是MACRO伪指令后的第一个语句。

15、何谓宏定义、宏调用、宏扩展、宏嵌套?在宏定义嵌套情况下,怎样实现调用内层宏定义?

安徽工程大学 计算机与信息学院xxd

汇编语言程序设计复习题

16、宏定义中的标号或变量如何处理?

1 外设与CPU和存储器的通信是通过外设接口进行的,每个外设接口包含哪些寄存器,以及这些寄存器的用途?

2 在IBM-PC机中,有哪4个专门存放段地址的寄存器、并分别指出这些段寄存器的用途?

3 标志寄存器有哪些标志位、并分别指明这些标志位的作用? 4下列操作可使用哪些寄存器? ⑴加法和减法 ⑵循环计数 ⑶乘法和除法

⑷将要执行的指令地址 ⑸表示运算结果为0

1、每个外设接口通常包含以下三种寄存器:一是用作数据缓冲的数据寄存器;二是用作保存设备和接口的状态信息,供CPU对外设进行测试的状态寄存器;三是用来保存CPU发出的命令以控制接口和设备的操作的命令控制寄存器。

2、有代码段寄存器CS——用来存放代码段的起始地址;

数据段寄存器DS——用来存放数据段的起始地址; 附加段寄存器ES——用来存放附加段的起始地址; 堆栈段寄存器SS——用来存放堆栈段的起始地址。

3、 有溢出标志OF,在运算过程中,如操作数超出了机器所能表示的范围则称为溢出溢出时OF 位置1,否则OF位置0; 符号标志SF,记录运算结果的符号,结果为负时,SF位置1,否则SF位置0;

零标志ZF,运算结果为0时,ZF位置1,否则ZF位置0; 进位标志CF,记录运算时从最高有效位产生的进位值。如执行加法指令时,最高有效位有进位时置1,否则置0;

辅助进位标志AF,记录运算时第三位(半个字节)产生的进位值。如执行加法指令时,第三位有进位时置1,否则置0;

奇偶标志PF,用来为机器中传送信息时可能产生的代码出错情况提供校验条件。当结果操作数中1的个数为偶数时置1,否则置0;

方向标志DF,在串处理指令中控制处理信息的方向用。当DF位为1时,每次操作后使变址寄存器SI和DI减量,这样就使串处理从高地址向低地址方向处理。当DF=0,则使SI和DI增量,使串处理从低地址向高地址方向处理;

中断标志IF,当IF为1时,允许中断,否则关闭中断; 陷井标志TF,用于单步方式操作。当TF为1时,每条指令执行完后产生陷井,由系统控制计算机; TF为0时,CPU正常工作不产生陷井。

4、⑴加法和减法——通用寄存器;

⑵循环计数——CX

⑶乘法和除法——AX用来被乘数、被除数。乘法中,DX用来存放乘积的高位字;除法中DX用来存放余数。 ⑷将要执行的指令地址——IP寄存器。

⑸表示运算结果为0——标志寄存器的ZF位。

1.简述DOS系统功能调用方法,写出在屏幕上显示数字9的指令语句。

2.定义数据段DATA_SEG,数据段中的数据按下列要求依次存储: (1)第一个字节是整数5

(2)变量BUF,大小为25个字节,初值为0

(3)变量ARRAY,类型为字,初值为12H,56H,78H,0AH (4)变量MSG存储字符串’yes’

3.假设DS=2000H,BX=0100H,(20100H)=30H,(20101H)=10H 问:(1)执行MOV DX,[BX] DX=_____ ⑵执行LEA DX,[BX] DX=_____ 简述两条指令区别。 4、设某数据段:

DATA SEGMENT ORG 20H NUM1=8

NUM2=NUM1+10H

DA1 DB 'COMPUTER' DB 0AH,0DH

COUNT EQU $-DA1

DA2 DW'CO','MP','UT','ER' DATA ENDS 试回答:

(1)DA1的偏移地址是:___________________ (2)COUNT的值是__________________________ (3)DA2+5字节单元的内容是________________ 1、 mov dl,9

add dl,48 mov ah,2 int 21h

7

2、 data_seg segments

a db 5

buf db 25 dup(0)

array dw 12h,56h,78h,0ah msg db ‘yes’

data ends 3、(1) 1030 (2)0100 4、(1) 20h (2)10 (3)U

5、分别用伪指令IRP和IRPC实现将AX、BX、CX、DX压栈。 用IRP

IRP REL PUSH REL ENDM 用IRPC

IRPC M,ABCD PUSH M&X ENDM

6、编一宏指令完成显示数据段中的一个字符串的功能。 DISP MACRO STRSN PUSH DX PUSH AX LEA DX,STRSN MOV AH,9 INT 21H POP AX POP DX ENDM

7、用宏指令实现代码段初始化。 BEGA MACRO CSNE,DSNE, ESNE

ASSUME CS:CSNE,DS:DSNE, ES:ESNE MOV AX,DSNE MOV DS,AX MOV AX,ESNE MOV ES,AX ENDM

2、设AX=1234H,BX=5678H,CX=8901H,SI=100H,SP的初始值=01A0H,问执行下述堆栈操作指令序列 PUSH CX PUSH AX PUSH BX ?? POP CX POP SI 后,SP和SI的值等于多少?

答SP和SI的值分别等于19EH和1234H。

1、 简述汇编语言从源程序的建立到运行可执行程序的主要步骤。

2、 请指出下列操作中可使用哪些寄存器。 ⑴存放各种运算操作的数据。 ⑵存放数据串操作时的计数值。

⑶查看程序已执行到哪条指令的地址。 ⑷查看运算结果是否等于0。 3、 简述REPNE MOSW指令的执行步骤。 4、 指令和伪指令的区别是什么? 5、 简述8086CPU的中断响应过程。

1简述汇编语言从源程序的建立到运行可执行程序的主要步骤。 答:⑴用编辑程序建立汇ASM编语言源程序;

⑵用汇编语言对源程序进行汇编,把ASM文件转化成OBJ文件;

⑶用连接程序对目标文件进行连接,把OBJ文件转换成EXE文件;

⑷用DOS命令直接键入文件名即可执行。 2请指出下列操作中可使用哪些寄存器。 ⑴存放各种运算操作的数据。 ⑵存放数据串操作时的计数值。

⑶查看程序已执行到哪条指令的地址。 ⑷查看运算结果是否等于0。

答:⑴AX,BX,CX,DX,SI,DI,SP,BP。 ⑵CX。 ⑶IP。

⑷PSW(标志寄存器)的ZF位。

3简述REPNE MOVSW指令的执行步骤。 答:略。

4指令和伪指令的区别是什么?

安徽工程大学 计算机与信息学院xxd

汇编语言程序设计复习题

答:指令是在程序执行期间由计算机来执行的,而伪指令(伪操作)是在汇编程序对源程序进行汇编时处理的操作,完成诸如数据定义、存储器分配、指示程序开始结束等功能。 5简述8086CPU的中断响应过程。 答:⑴取中断类型号N; ⑵标志寄存器内容入栈;

⑶当前代码段寄存器CS内容入栈; ⑷当前指令计数器IP入栈

⑸禁止硬件中断和单步中断(IF=0,TF=0); ⑹从中断向量表中取4×N的字节内容送IP,取4×N+2中的字节内容送CS;

⑺转中段处理程序。

1、 什么叫汇编语言?

2、 一个字在存储器中是如何存放的? 3、 简述REPNZ CMPSB指令的执行过程。

4、 什么是中断向量?中断向量表的作用是什么?

5、 使用21H中断的功能A输入字符串时应注意些什么? 什么叫汇编语言?

答:是一种符号语言,它用助记符表示指令的操作码和操作数,用标号或符号地址代表地址、常量和变量。它与机器语言几乎是一一对应的。

2、 一个字在存储器中是如何存放的?

答:一个字在存储器中占用相邻的两个存储单元,低8位存入低地址,高8位存入高地址,字单元的地址用它的低地址。 3、 简述REPNZ CMPSB指令的执行过程。 答:⑴如(CX)=0或ZF=0时退出,否则往下执行。

⑵(CX)←(CX)-1

⑶DS:((SI))-ES:((DI))

⑷(SI) ←(SI)±1, (DI) ←(DI)±1,若DF=0时为+,DF=1时为-

⑸重复⑴~⑷

4、 什么是中断向量?中断向量表的作用是什么?

答:为了提高响应中断的速度,通常把所有中断处理程序的入口地址(或称为中断向量)汇集在中断向量表中,当CPU响应中断时,根据中断源的中断类型号,直接从中断向量表中得到相应的入口地址,并从该地址开始执行中断处理程序。 5、 使用21H中断的功能A输入字符串时应注意些什么? 答:使用21H中断的功能A输入字符串时,特别要注意缓冲区的定义方法。缓冲区第一个字节保存最大字符数,这个最大字符数由用户给出。第二个字节是实际输入字符数,由功能A填入。在这两个字节之后,字符串就按字节存入缓冲区,最后一个字节是结束字符串的回车符0DH,因此整个缓冲区应定义为最大字符数(包括RETURN在内)加2。INT 21H的功能A把实际字符数(不包括RETURN)填入缓冲区的第二个字节,保持DS:DX指向缓冲区的第一个字节。所以输入的字符串应从指针DX+2开始。

编程题

1、 从键盘输入一字符串,然后将其按反序存放并输出。 DATA SEGMENT

STRING1 DB 80,0,80 DUP(?) STRING2 DB 80 DUP(?) DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA,ES:DATA MAIN PROC FAR

START: MOV AX,DATA MOV DS,AX MOV ES,AX

LEA DX,STRING1 MOV AH,0AH INT 21H

MOV CL,[STRING1+1] SUB CH,CH

LEA DI, STRING2 LEA SI,STRING1 ADD SI,CX INC SI

LAB: MOV AL,[SI] MOV [DI],AL INC DI DEC SI LOOP LAB

MOV BYTE PTR[DI],'$' LEA DX,STRING2 MOV AH,9

8

INT 21H

MOV AH,4CH INT 21H MAIN ENDP CODE ENDS

END START

2、 给出一百分制成绩,要求输出成绩等级

“A”,“B”,“C”,“D”,“E”。90分以上为A,80~89为B,70~79为C,60~69为D,60分以下为E。 DATA SEGMENT X DB 52 DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA MAIN PROC FAR

START: MOV AX,DATA MOV DS,AX MOV AL,X CMP AL,90 JB LAB1 MOV DL,'A' JMP EXIT LAB1: CMP AL,80 JB LAB2 MOV DL,'B' JMP EXIT LAB2: CMP AL,70 JB LAB3 MOV DL,'C' JMP EXIT LAB3: CMP AL,60 JB LAB4 MOV DL,'D' JMP EXIT LAB4: MOV DL,'E' EXIT: MOV AH,2 INT 21H

MOV AH,4CH INT 21H MAIN ENDP CODE ENDS

END START

3、将首地址为A的N字正整数组从小到大排序。 DATA SEGMENT

A DW 56H,85H,96H,52H,63H DATA ENDS

CSEG SEGMENT

ASSUME CS:CSEG,DS:DATA START: PUSH DS

SUB AX,AX PUSH AX

MOV AX,DATA MOV DS,AX

MOV CX,5 DEC CX

LOOP1: MOV DI,CX

MOV BX,0

LOOP2: MOV AX,A[BX]

CMP AX,A[BX+2]

JL CON

XCHG AX,A[BX+2] MOV A[BX],AX CON: ADD BX,2 LOOP LOOP2 MOV CX,DI LOOP LOOP1 RET CSEG ENDS

END START 4、编写程序,将一个包含有20个数据的数组M分成两个数组:正数数组P和负数数组N。 DSEG SEGMENT

M DW 10H,20H,-20H,30H,90H,100H,-520H,-600H DW 3654H,-52H,45H,41H,-59H,-5H,-87AH DW -9ABH,-65H,-90H ,65H,-89H P DW 20 DUP(?) N DW 20 DUP(?)

安徽工程大学 计算机与信息学院xxd

汇编语言程序设计复习题

DSEG ENDS

CSEG SEGMENT

MAIN PROC FAR

ASSUME CS:CSEG,DS:DSEG START:

MOV AX,DSEG MOV DS,AX XOR DX,DX LEA BX,M LEA SI,P LEA DI,N MOV CX,20 XOR DL,DL LAB1: MOV AX,[BX] ADD BX,2 CMP AX,0 JL LAB2 INC DL

MOV [SI],AX ADD SI,2 JMP LAB3 LAB2: MOV [DI],AX ADD DI,2 LAB3: LOOP LAB1 MOV AH,4CH INT 21H MAIN ENDP CSEG ENDS

END START

6、 数据段中从TABLE开始的连续20个字节单元存放着一个字符串,编写程序,判断其中是否含有数字字符,若有,则将DX寄存器的第四位置为1,否则置为0。(设DX的最低位为第一位)

……

mov cx, 20 mov si, 0 repeat:

mov al,table[si] cmp al, 30h jb goon cmp al, 39h ja goon or dl, 8 jmp exit goon:

inc si dec cx jnz repeat and dl, 0f7h exit: ……

7、 编写程序,将字变量VAR以十六进制数显示在显示器上。(采用子过程或非子过程实现均可)

……

mov bx, var

mov ch,4 ; 4组二进制数 rotate: mov cl,4 ; 每组4个二进制位

rol bx,cl ; 把bx循环左移4位 mov al,bl ; 暂存bl到al中 and al,0fh ; 仅保留al的低4位 add al,30h ; 转换成ASCII码 cmp al,3ah ; 要显示的数大于9 ? jl printit ; 如果数在0~9之间则显示 add al,7h ; 数在A~F之间则调整 printit:

mov dl,al ; 把要显示字符的ASCII码送dl mov ah,2 ; 功能号2送ah int 21h ; DOS功能调用 dec ch ; (ch)-1 jnz rotate ……

8、统计AX中16位二进制数中0的个数,结果存入数据段中的COUNT字节变量。

……

Mov cx,0 Do: and ax, ax

9

Jz done Sal ax,1 Jnc next

Inc cx next: jmp do Done: mov count, cx

9、编写程序完成如下功能:数据段中存放着一个字符串STR(以‘$’字符结束),统计STR中的数字字符个数,并将统计结果存入DL。

Mov dl, 0 mov si, 0 repeat:

mov al,str[si] cmp al, ?$? jz exit cmp al, 30h jb goon cmp al, 39h ja goon inc dl goon: inc si

jmp repeat exit: ……

10、设有三个数x,y和z,如果其中一个为0,将另外两个也清零,否则求它们的和,存入mem单元中。 data segment x db 12 y db 0 z db 8 mem db ? data ends code segment assume cs:code,ds:data main proc far start: mov ax,data mov ds,ax mov al,x cmp al,0 jz lab1 cmp y,0 jz lab1

Cmp z,0

jz lab1 add al,y add al,z mov mem,al jmp exit lab1: mov x,0 mov y,0 mov z,0 exit: mov ah,4ch int 21h main endp code ends

end start

11、在一个无符号字数组ARRAY中查找最大数,并将其存入字变量M中。 data segment

array dw 1234h,43h,3dfeh,9f1h,34h dw 99h,12abh,0f000h,23h,0edfh m dw ? data ends code segment assume cs:code,ds:data main proc far start: mov ax,data mov ds,ax mov cx,(max1-array)/2-1 lea bx,array mov ax,[bx] lab1: inc bx

安徽工程大学 计算机与信息学院xxd

汇编语言程序设计复习题

inc bx cmp ax,[bx] ja lab2 mov ax,[bx] lab2: loop lab1

mov m,ax

exit: mov ah,4ch int 21h main endp code ends end start

12、将数据段中已定义的字符串STR中所有的小写字母转换为大写。

DATA SEGMENT

STR DB ?AbCdefGH? LEN DB $-STR DATA ENDS

CODE SEGMENT

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

MOV CL, LEN

MOV BX, OFFSET STR DO: CMP [BX],?a? JB LOP CMP [BX], ?z? JA LOP

SUB BYTE PTR[BX], 32 LOP: INC BX

LOOP DO HLT

CODE ENDS

END START

13、编写程序,完成下面公式的计算(其中变量x和y是32位

有符号数,变量a、b和z是16位有符号数) DATA SEGMENT

X DD 65432H Y DD 12345H A DW ? B DW ? Z DW 34H DATA ENDS CODE SEGMENT

MAIN PROC FAR

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

MOV AX,WORD PTR X MOV BX,WORD PTR Y MOV DX,WORD PTR X+2 MOV CX,WORD PTR Y+2 SUB AX,BX SBB DX,CX ADD AX,24 ADC DX,0 IDIV Z MOV A,AX MOV B,DX MOV AH,4CH INT 21H MAIN ENDP CODE ENDS

END START 14、编写程序,实现将数据段BUFF开始的字节单元中的10个数

字0,1,2,3,4,5,6,7,8,9转化成相应的ASCII码送入以ASC开始的内存单元。 DATA SEGMENT

BUFF DB 0,1,2,3,4,5,6,7,8,9 CONT EQU $-BUFF ASC DB 10 DUP(?) DATA ENDS CODE SEGMENT

MAIN PROC FAR

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

10

MOV DS,AX SUB SI,SI MOV CX,CONT LOP: MOV AL,BUFF[SI] OR AL,30H MOV ASC[SI],AL INC SI LOOP LOP MOV AH,4CH INT 21H MAIN ENDP CODE ENDS

END START

15、设有单字节无符号数X,Y,Z,若X+Y>200,则求X+Z,否则求

X-Z,运算结果放在SUM1单元中.(X,Y,Z,SUM1均为字节变量名)

DATA SEGMENT

X DB 200 Y DB 123 Z DB 21 SUM1 DB ? DATA ENDS CODE SEGMENT

MAIN PROC FAR

ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV AL,Y MOV DL,X ADD AL,DL CMP AL,200 JA LAB1 SUB DL,Z JMP LAB2 LAB1: ADD DL,Z LAB2: MOV SUM1,DL MOV AH,4CH INT 21H MAIN ENDP CODE ENDS

END START

16、从键盘上读入一字符串(长度小于40),将该串反转后,输

出显示。

MAXNO EQU 41 DATA SEGMENT

MESSG1 DB 'INPUT A STRING:$' MESSG2 DB 'IT IS REVERSE IS:$' MESSG3 DB 0AH,0DH,'$'

BUF DB MAXNO,?,MAXNO DUP(?) DATA ENDS CODE SEGMENT

MAIN PROC FAR

ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX LEA DX,MESSG1 MOV AH,9 INT 21H LEA DX,BUF MOV AH,0AH INT 21H

LEA DX,MESSG3 MOV AH,9 INT 21H XOR AX,AX MOV CL,BUF+1 SUB CH,CH LEA DI,BUF+2 MOV SI,DI ADD SI,CX

MOV BYTE PTR[SI],'$' DEC SI CONT: CMP DI,SI JZ FINISHD MOV AL,[SI] XCHG AL,[DI] MOV [SI],AL

安徽工程大学 计算机与信息学院xxd

汇编语言程序设计复习题

DEC SI INC DI JMP CONT

FINISHD: LEA DX,MESSG2 MOV AH,9 INT 21H

LEA DX,BUF+2 MOV AH,9 INT 21H MOV AH,4CH INT 21H MAIN ENDP CODE ENDS

END START 阅读程序题

1. 写出下列程序执行后STR2的内容。

DATA SEGMENT STR1 DB ‘HELLO,AUTS!’ COUNT EQU $-STR1 STR2 DB COUNT DUP(?) DATA ENDS CODE SEGMENT

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

MOV DS, AX MOV CX, COUNT LEA SI, STR1 LEA DI, STR2

DO:MOV AL, [SI] MOV [DI],AL INC SI INC DI LOOP DO MOV AH, 4CH INT 21H CODE ENDS END GO

2.设(AX)=7EA2H,写出下列指令单独执行后,AX的值。(各指令间彼此无关,结果用16进制数表示)

① XOR AX, 97H ② AND AX, 97H ③ OR AX, 97H ④ NOT AX

⑤ TEST AX, 97H 1. ‘HELLO, AUTS!’ 2. ① 7E35H

② 0082H ③ 7EB7H ④ 815DH ⑤ 7EA2H

2. 设(AX)=2AE7,写出下列指令单独执行后,AX的值。(各指令间彼此无关,结果用16进制数表示)

① XOR AX, 79H ② AND AX, 79H ③ OR AX, 79H ④ NOT AX ⑤ TEST AX, 79H 2. ① 2A9EH

② 0061H ③ 2AFFH ④ 0D518H ⑤ 2AE7H

1. 下列程序段的运行后寄存器AL= 。

MOV AL,0 MOV BL,0 MOV CX,4 L1: INC BL INC BL ADD AL,BL LOOP L1 HLT

2.下列程序的运行结果是 。 data segment buf db ‘I am the first line’,0dh,0ah db ‘I am the second line’,‘$’

11

data ends code segment assume cs:code,ds:data main proc far

start: mov ax,data mov ds,ax lea dx,buf mov ah,9 int 21h mov ah,4ch int 21h main endp code ends end start 1. 20

2. I am the first line

I am the second line

1.下列程序的运行后,显示器输出 。 data segment buf db ‘Peking 2008’,0dh,0ah db ‘Welcome you!’,0dh,0ah,‘$’ data ends code segment assume cs:code,ds:data main proc far

start: mov ax,data mov ds,ax lea dx,buf mov ah,9 int 21h mov ah,4ch int 21h main endp code ends end start

2. 下列程序段的功能是_____,运行后,BL=_____、DL= 、AX=_____。 MOV AX,1234H MOV BL, 0 MOV DL, 0 MOV CX, 16 L1: SHL AX, 1 JC L2 INC BL JMP L3 L2: INC DL L3: LOOP L1 HLT

1. Peking 2008

Welcome you!

2. 统计1234H对应的16位2二进制数含有0和1的个数。 BL=11,DL=5,AX=0

程序分析题

1设寄存器AX,BX,CX中的内容都是1234H,变量value中的内容为0F0FH,执行下列指令序列: OR AX,value AND BX,value XOR CX,value

则AX=_____,BX=_____,CX=_____ 2.MOV AL,5 ADD AL,AL MOV BL,AL ADD AL,AL ADD AL,BL

上述程序段执行后,AL=_____,BL=_____,程序段的功能用数学表达式表示_____。 3. NUM DB ? MOV AH,1 INT 21H

CMP AL,39H JBE NEXT SUB AL,7 NEXT:SUB AL,30H MOV NUM,AL

上述程序段运行后,若输入’F’,则(NUM)=_____(用二进制表

安徽工程大学 计算机与信息学院xxd

汇编语言程序设计复习题

示),若输入’8’,则(NUM)=_____(用二进制表示) 该程序段的功能是_____。 4.有下列数据定义 VA DB 0FFH VB DB 1,2 VC DW 3456H

执行下列指令序列:

MOV AX,WORD PTR VB+1 MOV BL,BYTE PTR VC+1 MOV CL,VB-1

则AX=_____,BL=_____,CL=_____ 1、1F3FH,0204H,1D3BH 2、1EH,0AH,(5+5)+(5+5)

3、00001111,00001000,16进制转化为2进制 4、5602H34H,0FFH

1、已知AX=0FF60H,CF=1 MOV DX,96 XOR DH,0FFH SBB AX,DX

执行上述指令序列后,AX=_________,CF=______ 2、设寄存器AL,BL,CL中内容均为76H, XOR AL,0FH AND BL,0FH OR CL,0FH

执行上述指令序列后,AL=___BL=_______,CL=________ 3、已知AX=0A33AH,DX=0F0F0H AND AH,DL XOR AL,DH NEG AH NOT AL

执行上述指令序列后,AH=__________,AL=________ 4、DATA SEGMENT

S9 DB 0,1,2,3,4,5,6,7,8,9 DATA ENDS ┇

LEA SI,S9 LEA DI,S9+1 MOV CX,5

LOP: MOV AL,[SI] XCHG AL,[DI] MOV [SI],AL ADD SI,1 ADD DI,1 LOOP LOP

上述程序段运行后,S9开始的10个字节存储单元内容是什么?5、MOV AL,38H MOV BL,49H CALL SUBO INC AL DEC CL ┇

SUBO PROC ADD AL,BL MOV CL,AL DAA RET

SUBO ENDP

上述程序段运行后,AL=________,CL=__________ 1、0000h,0

2、79H,06H,7FH 3. 60H,35H

4、1,2,3,4,5,0,6,7,8,9 5、88,80

1、 分析下列程序段,回答指定问题:

MOV AX ,0123H MOV BX ,.321H PUSH AX PUSH BX POP AX POP BX

请问(AX)= (1) ,(BX)= (2) 。 2、 分析下面程序段,回答指定问题:

MOV CX ,DX NOT CX

ADD CX ,DX

INC CX

请问(CX)= (3) ,(ZF)= (4) 。 3、 现有程序段如下:

MOV AX,3200H MOV BH,AH MOV CL,4 SHL AH,CL SHR BH,CL OR AH,BH

请问:程序执行后(AH)= (5)

4、 执行下列指令序列后,会将(DX,AX)的值 (6)

MOV CL,4 SHL DX,CL MOV BL,AH SHL AX,CL SHR BL,CL OR DL,BL

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

ARRAY DW 10 DUP(2) ?? XOR AX,AX

MOV CX,LENGTH ARRAY

MOV SI,SIZE ARRAY - TYPE ARRAY

NEXT: ADD AX,ARRAY[SI] SUB SI,TYPE ARRAY LOOP NEXT 6、 现有程序段如下: LAB1: MOV AH,1 INT 21H CALL SUB1 JC LAB1 ADD AL,’a’-‘A’ MOV DL,AL MOV AH,2

INT 21H

SUB1 PROC CMP AL,’A’

JB LAB2 CMP AL,’Z’ JA LAB2 CLC RET

LAB2: STC RET SUB1 ENDP 请问:

①该程序段的功能是 (8) 。

②由DL寄存器输出显示的内容是 (9) 。

7、 执行完下列程序后,寄存器AX,BX,CX的值分别是多少? ORG 1221H NUM DW 12H ?? MOV AX,NUM MOV BX,OFFSET NUM MOV CL,BYTE PTR NUM+1 MOV CH,BYTE PTR NUM HLT

(10)(AX)=( )、(BX)=( )、(CX)=( )。

(1)0321H (2)0123H (3)0 (4)1 (5)23H (6)左移4位 (7)20 (8)将从键盘输入的大写字母转换为小写字母,并显示输出,其它字符全部舍弃

(9)转换成小写字母的ASCII值

(10)(AX)=0012H,(BX)= 1221H,(CX)=1200H 1、现有如下程序段: MOV AL,32H ADD AL,2AH SAL AL,1 HLT

当程序执行后(AL)= ⑴

2、执行下列程序后,回答指定问题: FIND MARCO X,Y,Z LOCAL @801,@802 MOV AX,X CMP AX,Y JBE @801 MOV AX,Y @801: CMP AX,Z

12

安徽工程大学 计算机与信息学院xxd

汇编语言程序设计复习题

JBE @802 MOV AX,Z @802: ENDM CODE SEGMENT ASSUME CS:CODE FIND 21,60,40H HLT CODE ENDS

请问:①该程序段的功能是 ⑵ ; ②程序执行后(AX)= ⑶ 。

5、当执行下列指令后,(AL)= ⑷ ,(DX)= ⑸ 。 STR1 LABEL WORD STR2 DB 12H DB 34H ?? MOV AL,STR2 MOV DX,STR1 6、现有数据段如下: DATA SEGMENT ORG 0020H DA1 DW 12H,23H DA2 DB 11H,21H DA3 EQU 1234H DA4 EQU $-DA2 DA5 DB 31H,32H DATA ENDS

请问:①该数据段已占有的存储字节数是 ⑹ ;

②符号名DA4的值是 ⑺ , 符号名DA5的值(地址值)是 ⑻ 。

7、现有数据段如下: DSEG SEGMENT DA1 DB 10H DUP(1) DA2 DW 10H DUP(0203H) DSEG ENDS ?? MOV AX,0 MOV BX,AX MOV CX,BX DON: ADD AL,DA1[BX] ADD AL,BYTE PTR DA2[BX] INC BX LOOP DON HLT

请问程序执行过程中,当(BX)=08H时,(AL)= ⑼ ,(CX)= ⑽ 。 (1)0B8H,(2)在3个无符号数中找出最小的一个数 ,(3)15H, (4)(AL)=12H ,(DX)= (5)3412H ,(6)8 ,(7)02H ,(8)0026H ,(9)1CH ,(10)0FFF9H。

13 安徽工程大学 计算机与信息学院xxd

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

Top