1、第四章习题集一、 判断 (正确的在括号画“” , 错误的画“” 1. 汇编语言程序语言必须由四部分组成。 ( 2. 汇编语言源程序中所使用的变量,必须在代码段中先定义,后引用。 (错 3. 在汇编语言中,一般伪指令语句放在代码段中 (错 4. 逻辑操作符 AND 、 OR 、 XOR 或 NOT ,只能用于数字表达式。 ( 错 5. 符号定义语句不占内存单元,变量定义语句占内存单元。 (6. 汇编语言源程序中至少有一个代码段。 ( 对 7. 伪指令是指示性语句 , 不产生机器目标代码。 ( 8. 伪指令 BV AR :DB ABCD , 200 DUP(?是合法伪指令。9. 伪指令 DAT1
2、DB 7, 8, 9, 10 与 DA T1 DW 07H, 08H , 09H , 0AH 所预置的数据是一 样的。10. 8086CPU 的中断向量表共占有 1024个字节 (00000H -003FFH , 所以共有 1024个中 断。 二、单项选择题1. 用高级语言编写的程序(C 。A 、只能在基本种计算机上运行 B 、无需经过编译或解释,即可被计算机直接执行 C 、具有通用性和可移植性 D 、几乎不占用内存空间2. 一般地,我们将计算机指令的集合称为(B 。A . 机器语言 B. 汇编语言 C. 模拟语言 D. 仿真语言3. 我们通常所说的“ 裸机”指的是(C 。A. 只装备有操作系
3、统的计算机 B. 不带输入输出设备 的计算机C. 未装 备任何软件的计算机 D. 计算机主机暴露在外4. 计算机的软件系统一般分为(C 两大部分。A. 系统软件和应用软件 B. 操作系统和计算机语言C. 程序和数据 D. DOS 和 Windows5. 计算机系统软件中的汇编程序是一种 ( C 。A. 汇编语言程序 B. 编辑程序C. 翻译 程序 D. 将高级语言转换成汇编程序的程序6. 假设 V1和 V2是用 DW 定义的变量,下列指令中正确的是:AA. MOV V1,20H B. MOV V1, V2C. MOV AL,V1 D. MOV 2000H , V27. PC 机所使用的标准键盘
4、 向主机发送的代码是 AA . ASCII 码 B . 扫描码 C. BCD 码 D. 格雷码8. 8086CPU 中断号为 8的中断矢量存放在(C 。A. 0FFFFH :0008H B. 0000H :0008HC. 0000H :0020H D. 0020H :0000H9. 已知变量 VAR 为字型,则 TYPE VAR=(B 。A 、 1 B 、 2 C 、 3 D 、 410. 交换寄存器 SI 、 DI 的内容,正确的程序段是(AC 。A 、 PUSH SI B 、 PUSH SIPUSH DI PUSH DIPOP SI POP DIPOP DI POP SIC 、 MOV A
5、X , SI D 、 MOV AX , SIMOV SI , AX MOV BX , DIMOV DI , AX XCHG BX , AX11. 段定义语句以 ( B 语句结束。A.END B.ENDS C.ENDP D.ENDM 12. 若主程序段中数据段名 为 DA TA ,对数据段的初始化操作应为A. MOV AX, DATA B. MOV AX, DA TAMOV ES, AX MOV DS, AXC. PUSH DS D. MOV DS, DATA13. .EXE 文件 产生在A. 汇编 B. 编辑 C. 用软件 转换 D. 连接14. 定义双字变量的定义符是 。A. DW B. D
6、Q C. DD D. DT15. 下列存储器操作数的跨段前缀可省略的是 。A. DS:BP B. SS:BP C. ES:BX D. ES:SI16. 执行下列指令:STR1 DW ABSTR2 DB 16 DUP(?CONT EQU $-STR1MOV CX,CONTMOV AX,STR1HLT后寄存器 CL 的值是 c 。A. 0FH B. 0EH C. 12H D. 10H17. 与 MOV BX, OFFSET VAR指令完全等效的指令是 ( D。A. MOV BX, VAR B. LDS BX, VARC. LES BX, VAR D. LEA BX, VAR18. 在段定义时,如果
7、定位类型用户未选择,就表示是隐含类型,其隐含类型是 ( D。 A 、 WORD B 、 PAGE C 、 BYTE D 、 PARA19. BUF DW 10H DUP(3 DUP(2, 10H , 3, 5上述语句汇编后,为变量 BUF 分配的存储单元字节数是 (160? 。A 、 80H B 、 100H C 、 124 D 、 19220. 在汇编语言程序的开发过程中使用宏功能的顺序是 (C 。A 、宏定 义,宏 调用 B 、宏定义,宏展开C 、宏定义,宏调用,宏展开 D 、宏定义,宏展开,宏调用21. 汇编语言源程序中,每个语句由四项组成,如语句要完成一定功能,那么该语句中不 可省略的
8、项是 ( B。A 、名字 项 B 、操作项 C 、操作数项 D 、注 释项22. 编写分支程序,在进行条件判断前,可用指令构成条件,其中不能形成条件的指令有 ( D 。A 、 CMP B 、 SUB C 、 AND D 、 MOV23. 为使 CX=-1时,转至 MINUS 而编制了一指令序列 ,其中错误的序列是 ( D。A 、 INC CX JZ MINUS B 、 SUB CX, OFFFFH JZ MINUSC 、 AND CX, OFFFFH JZ MINUS D 、 XOR CX, OFFFFH JZ MINUS24. 假设 V1和 V2是用 DW 定义的变量,下列指令中正确的是 (
9、 A .A. MOV V1,20H B. MOV V1, V2C. MOV AL,V1 D. MOV 2000H , V225. 假设 V AR 为变量,指令 MOV BX , OFFSET VAR 的寻址方式是 (C 。A .直接寻址 B .间接寻址 C .立即寻址 D .存储器寻址三 . 多项选择题(每题有多个正确答案,选出所有正确答案,多选、少选均不得分 1. 8086指令的操作数可能有A. 0 B. 1 C. 2 D. 32. 变量定义的伪指令助记符有:。A. DB B. DW C. DD D. DF E. DQ F. DT3. 主程序与子程序之间传递参数可通过A. 堆栈 B. 存储器
10、单元 C. 通用寄存器 D. 指令队列 E. 其他4. 汇编语言源程序经 MASM 汇编后可直接生成的文件是 。A. .LST B. .CRF C. .EXE D. .OBJ E. .ASM F. .MAP5. 过程(子程序调用的形式有(ABCD 。A 、段内直接 B 、段内间接 C 、段间直接 D 、段 间间接四. 填空题8. 设当前的 SP=0FFFH,执 行 PUSHF 指令后, SP=(0FFD H ,若改为执行 INT 20H指令后,则 SP=(0FF9 H 。2. 23. 当要求段的首地址只能被 16整除时,需选择的定位方式为 。2. 二进制编码的十进制数称为 BCD 码,它用BC
11、D 码有 和 两种格式。1. MOV AX , (V AR LT 6 AND 40 OR (V AR GE 6 AND 50 ,当 V AR 6时, 汇编结果源操作数为 。2. 程序段 V AR1 DB ?V AR2 DW 20 DUP(58H , 2 DUP(? V AR3 DBABCD.MOV AX,TYPE V AR1MOV BX,TYPE V AR2MOV CX,LENGTH VAR2MOV DX,SIZE VAR2MOV SI,LENGTH VAR3, , 。3. 段定义伪指令语句用 语句表示开始,以 语句表示结束。4. ARRAY DW 10 DUP(5 DUP(4 DUP(20H
12、 , 40H , 60H 语句执行后共占 字 节存储单元。5. 汇编语句中, 一个过程有 NEAR 和 FAR 两种属性。 NEAR 属性表示主程序和子程序 内转移 , FAR 属性表示主程序和子程序 段间转移 。6. DOS 系统功能号应放在 寄存器中。7. 子程序又称 ,它可以由8. 与指令 MOV BX , OFFSET BUF功能相同的指令是 。10. 设有伪指令 A DB 01H, 23H ,则执行指令B DW 2 DUP(0MOV AL, TYPE A后, (AL ;MOV BL, SIZE B后, (BL 。.设有伪指令 A DB 01H, 23H ,则执行指令B DW 2 DU
13、P(0MOV AL, TYPE A后, (AL ;MOV BL, SIZE B后, (BL 。7. 根据下面的指令和伪指令序列, AX 寄存器的内容TAB DB 1, 2, 3, 4, 5, 6ENTRY EQU 3MOV BX , OFFSET TABADD BX , ENTRYMOV AX , WORD PTR BX8. 对于下面两个数据段,偏移地址为 10H 和 11H 的两个字节中的数据是一样的吗?为 什么?DTSEG SEGMENT | DTSEG SEGMENTORG 10H | ORG 10HDATA1 DB 72H | DATA1 DW 7204HDB 04H | DTSEG
14、ENDSDTSEG ENDS |( 。12. 将下列文件类型填入空格:(1 .obj (2 .exe (3 .crf (4 .asm (5 .lst (6 .map编辑程序输出的文件有( ;汇编程序输出的文件有( ;连接程序输出的文件有( 。4. ORG 1000HX DB 12HY DW XZ DD Y(DS=3800H, (BX=1000H, (SI=0002H求下列指令执行完后指定寄存器的内容MOV AX, 1000H ;MOV AX, BX; HMOV AX, BX+SI; HMOV AX, Y+1;LDS SI,Y; H6. 数据段中有以下定义:ARRAY1 EQU 16HARRAY
15、2 DW 16H请指出下面两条指令的寻址方式:MOV AX , ARRAY1;寻址方式 :MOV AX , ARRAY2;寻址地址 :8. 内存单元初始化内容为:(2000H :2A00H -(2000H :2A02H 分别为 0FH 、 0EH 、 0DH , (2000H :2A10H -(2000H :2A12H 分别为 09H 、 08、 07H 。执行下列程序 后,请填写存储单元的内容:MOV AX , 2000HMOV DS , AXMOV ES , AXMOV SI , 2A10HMOV DI , 2A00HCLDMOV CX , 3L :MOV AL , DIMOVSBDEC
16、SIMOV SI, ALINC SILOOP LHLT(1 2000H :2A00H= 09H 。(2 2000H :2A11H= 0EH 。(3 2000H :2A12H= 0DH 。四 . 程序分析题1. 执行下面的程序段后 ,CX 的内容是 ( 3 .DAT1 DB 12H,34H,56HN=$-DAT1MOV CX,N2. 执行下面的程序段后 ,AX 的内容是 ( 12H , BX的内容是 ( 3412H .M1 DB 12H, 34HMOV SI,OFFSET M1MOV AX,0MOV AL,SIMOV BX,WORD PTR SI3. 源程序如下:STR DB ABCDEF012
17、3456789MOV BX , OFFSET STRMOV AL , 65HPUSH AXAND AL , 0FHXLATMOV DL , ALPOP AXADD AL , 08HDAAMOV DH , ALCMP DH , 32H执行上面程序段后, (DL =( , (DH =( 。 46H 73H4. 源程序如下:MOV AX , SEG TABLE ; TABLE 为表头MOV ES , AXMOV DI , OFFSET TABLEMOV AL , 0MOV CX , 100CLDREPNE SCASB问:1 该段程序完成什么功能?2 该段程序执行完毕之后, ZF 和 CX 有几种可能
18、的数值?各代表什么含义?(1 从目的串中查找是否包含字符 0 ,若找到则停止,否则继续重复搜索。(2 ZF=1, 说明已找到字符ZF=0, 说明未找到字符CX 0,说明中途已找到字符退出CX=0,且 ZF=0说明串中无字符 05. 源程序如下:DATA SEGMENTS9 DB 0, 1, 2, 3, 4, 5, 6, 7, 8, 9DATA ENDSLEA SI, S9LEA , DI , S9+1MOV CX, 5LOP :MOV AL, SIXCHG AL, DIMOV SI, ALADD SI, 2ADD DI, 2LOOP LOP上述程序段运行后, S9 开始的 10个字节存储单元内
19、容是什么?1, 0, 3, 2, 5, 4, 7, 6, 9, 86. 源程序如下:MOV AL, 38HMOV BL, 49HCALL SUBOINC ALDEC CLSUBO PROCADD AL, BLMOV CL, ALDAARETSUBO ENDP上述程序段运行后, AL=_87h_, CL=_81h_ 7. 源程序如下:DA3 EQU WORD PTR DA4DA4 DB 0ABH, 89HSHR DA3, 1MOV DX, DA3SHL DA4, 1MOV CX, DA3上述程序段运行后, CX=_44aah_, DX=_44d5h_8. 下面程序是将 10个 8位无符号数按递减
20、次序排序,请将程序填写完整。DA TA SEGMENTARRAY DB 05H , 78H , FFH , 7BH , 00HDB 8CH , 20H , A0H , F0H , 60HDA TA ENDSCODE SEGMENTASSUME CS :CODE , DS :DATAMAIN PROC FARSTART :PUSH DSXOR AX , AXPUSH AXMOV AX , DA TAMOV DS , AXAB1:MOV SI , OFFSET ARRAYMOV BL , 0MOV CX , 10AGAIN :MOV AL , SIINC SICMP AL , SICD1MOV A
21、H , SIMOV SI, ALDEC SIMOV SI, AHINC SIMOV BX , 1CD1:LOOP AGAINDEC BLAB1RETMAIN ENDPCODE ENDSEND START9. 下面的程序段是统计 AX 中 16位二进制数 1的个数 , 并将结果放在 CX 中 , 填空使程序 完成预定的功能。XOR CX,CXL1:AND AX,AXJZ STOPSHL AX,1INC CXL2:JMP L1STOP :HLT10. 下面的程序段是求 8个无符号数累加和 , 最后结果用双字表示 , 存在 YAH 和 Y AL 单元,填空使程序完成预定的功能。DATA SEGMEN
22、TTABLE DW 34,789,67,78, 345, 89, 78, 60YAH DW 0YAL DW 0DATA ENDSCODE SEGMENTASSUME CS :CODE, DS:DATASTART :MOV AX,DATAMOV DS,AXMOV DX,0XOR AX, AX ; 清 AXMOV BX, OFFSET TABLEMOV CX, 8CLCLP :ADD AX, BX(DON :INC BXINC BXLOOP LPMOV YAL,AX ; 存和MOV YAH,DXMOV AH,4CHINT 21HCODE ENDSEND START11. 两个非组合 BCD 数(B
23、Y0, BY1进行十进制减法,并将差求绝对值后保存在 SD 单 元。MOV AL , BY0CMP AL , BY1JNC L1MOV AH , BY1MOV BY1, ALMOV AL , AHL1:SUB AL , BY1MOV SD , AL12. 附加段有一块长 50个字的数据区,首址为 DEST ,现将数据区初始化为 0FFFFH 。 LEA DI , DESTMOV CX , 50*2CLDMOV AL , 0FFH13. 下面是某数据段定义,在表中标出各字节单元的值,并回答问题。DATA SEGMENTPA DB 1PB DW 5PP EQU 2PC DB PP DUP (0DA
24、TA ENDSTYPE PA=(1 TYPE PB=(3 SIZE PA=(1 SIZE PB=(2 SIZE PC=(2 14. 源程序如下:MOV CL , 4MOV AX , 2000HSHL AL , CLSHR AX , CLMOV 2000H, AX试问: 若程序执行前,数据段内 (2000H=09H, (2001H=03H, 则执行后有 (2000H=_,(2001H=_。本程序段的功能 _。(2000H=39H (2分 (2001H=00H (2分 将 (2000H,(2001H两相邻单元中存放的未组合型 BCD 码压缩成组合型 BCD 码,并存入(2000H单元, 0 (20
25、01H (2分 15. 阅读程序,并完成以下要求(10分DA4 DB 0ABH, 89HDA3 EQU WORD PTR DA4SHR DA3, 1MOV DX, DA3SHL DA4, 1MOV CX , DA4上述程序段运行后, CX=, DX=16. 阅读程序,并完成以下要求(10分MOV CL , 04HMOV DX , 1234HMOV AX , 5678HSHL DX , CLMOV BL , AHSHL AX , CLSHR BL , CLOR DL , BLa 给程序段加上注 释; b (DX =, (AX =c 由上面的结 果可以看出 该程序的功能是:左移动 4位17. 源程
26、序如下:(6分 MOV CX , 9MOV AL , 01HMOV SI , 1000HNEXT :MOV SI, ALINC SISHL AL , 1LOOP NEXT试问: 执行本程序后有:AL=_; SI=_; CX=_;本程序的功能是 _。0 (1分 1009H (1分 0 (1分 对数据段内 1000H1008H单元置数,依次送入 1, 2, 4, 8, 16, 32, 64, 128, 0共九个 (3分 3. 设某数据段:DATA SEGMENTORG 20HNUM1=8NUM2=NUM1+10HDA1 DB COMPUTERDB 0AH, 0DHCOUNT EQU $-DA1DA
27、2 DWCO, MP , UT , ERDATA ENDS试回答:(1DA1的偏移地址是:_20H_(2COUNT的值是 _10_(3DA2+5字节单元的内容是 _T_18. 用减法实现除法。 X 是被除数 , Y 是除数,处理结束后商存放在 RESULT ,余数存放在 XYMOD 。.MODEL SMALL .386 .STACK .DA TA X DW 7 Y DW 2 .DA TA? RESULT DW ? XYMOD DW ? .CODE.STARTUPMOV AX,XMOV BX,YMOV CX,0.WHILE _ SUB AX,BX_ .ENDWMOV RESULT,CXMOV X
28、YMOD,AX.EXITEND AX=BX INC CX19. 从 BUF 开始的 11个单元中存放着 11个整数,找出这 11个数中正数并且是偶数的个数存入 R 中。DA TA SEGMENTBUF DB 2,5,-3,6,100,0,-20,-9,8,-110,21R DW ?DA TA ENDSCODE SEGMENTBEGIN :MOV AX, DATALEA BX, BUFMOV CX, N被除 数除数 商 7 2 05 2 13 2 2余数 1 2 3 商图 4-15 用减法实现除法示意图LOPA :CMP BX, BYTE PTR 0TEST BX, BYTE PTR 1INC
29、AXNEXT :INC BXDEC CXMOV R, AXMOV AH, 4CHINT 21HCODE ENDSEND $-BUF ASSUME CS:CODE,DS:DATA MOV DS,AX MOV AX,0 JLE NEXT JNZ NEXT JNZ LOPA BEGIN五 . 简答题1. 变量和标号有何区别? 变 量有哪些属性?已有 MOV AL , INFBP+SI 与 MOV AL , ES :INFBP+SI两条指令,试问: 其源 操作数采用何种寻址方式?是字或是字节操作? 两条指令有何区 别?源操作采用基址 +变址寻址方式 是 字节操作MOV AL, INFBP+SI访问 的
30、是堆栈段MOV AL, ES :INFBP+SI访问的是附加段,实现了段超越2. 有变量定义的伪指令如下:NUMS DW 18 DUP(4 DUP(5,23V AR DB HOW ARE YOU !, 0DH, 0AH试问:NUMS 、 V AR 变量各分配了多少存储字节?NUMS 分配了 180个字节 (3分 V AR 分配了 15个字节1、在指令系统中,段内、段间返回均为 RET 指令。试 回答:(1执行段内返回 RET 指令时,执行的操作是:把 SP 所指的堆栈顶部的一个字的内容 弹回 IP , SP 加 2。(2执行段 间返回 RET 指令时,执行的操作是:段间返回指令把 SP 所指的
31、堆 栈顶部的两个字的内容先 弹回 IP 后弹回 CS , SP 加 4。3. ARY DW 10 DUP(? MOV AL, TYPE ARY .;MOV BL, LENGTH ARY ;MOV CL, SIZE ARY ;上述 MOV 指令序列执行后的结果是什么?2, 10, 204. 已知某数据段定义如下:(6分DSEG SEGMENTORG 00HDAT1 DW 4 , 26ORG 06HDAT2 DW 5678HDB AB DSEG ENDS5.DA TA SEGMENTA DB 1, 2, 3, 4B DB ABCD C DW 2 DUP (0D EQU 12E DW 33H , 2
32、0AHF DD 0ABCDHDA TA ENDS6. 读程序 , 并回答问题DATA SEGMENTTABLE DB 0,1,4,9,16,25,36,49,64,81,100 XAD DB 3YAD DB ?DATA ENDSSTACK SEGMENT STACK STACK STA DB 16 DUP (STACKSTACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK MAIN PROC FARSTART: PUSH DSMOV AX, 0PUSH AXMOV AX, DATAMOV DS, AXMOV BX, OFFSET TABLEM
33、OV AH, 0MOV AL, XADADD BX, AXMOV AL, BXMOV YAD,ALADD AL, 30HMOV DL, ALMOV AH, 02HINT 21HRETMAIN ENDPCODE ENDSEND START(1. 在存 储器中分别为 table 、 xad 、 yad 、 sta 分配多少字 节单元?在存储器中分别为 TABLE 、 XAD 、 YAD 、 STA 分配 11字节 ,1字节 ,1字节 ,16字节 单元(2. 程序运行后 ,xad 、 yad, 单元中的值为多少? 屏幕上显示的字符是什么?程序运行后 ,XAD 、 YAD, 单元中的值为 9和 39H ,屏幕上显示的字符是“ 9”。