求汇编语言期末复习题

2024-10-30 02:41:42
推荐回答(1个)
回答1:

汇编语言2005—2006学年第二学期期末考试复习题及参考答案
一、 填空
1. 十进制数369转换成二进制数为()2,转换成十六进制数为困虚()16.
2. 计算机中的指令由( )和( 地址码 )两部分组成。
3. 8086的地址总线有20根,寻址范围为( )字节。
4. 下一条将要执行的指令的地址存放在寄存器( )中。
5. 写出IBM PC机的三种子程序返回的指令(RET), (IRET),(IRETD)。
6. 汇编语言源程序需经过()程序汇编,( )程序连接才能生成可执行文件。
7. 存储器某单元的地址表示为2314H:4132H,则它的偏移地址=(4132),物理地址=()
8. REP指令前缀与()指令配合使用。
9. 在显示器上查看和修改内存单元的内容可以使用DEBUG的( )和( )命令。
10. (AL)=BFH,要求屏蔽第0,1两位,则要执行指令( );如果要求第0,1位变反,可使用指令( )
11. 宏汇编适合于(),()的汪掘燃子功能段使用;
二、 选择题
1. 设字长N=16,有符号数7AE9H的补码表示为( )
A. 9EA7H B. 76C4H C. 8417H D. 7AE9H
2. 比较有符号数3260H与0B425H的大小关系为( )
A. 相等 B. 小于 C. 大于 D. 不能比较
3. 指令JMP WORD PTR [BX][DI]中转移的目标地址为( )
A.16 d x(DS)+(BX)+(DI) B.16d x(ES)+(BX)+(DI)
C.16d x(SS)+(BX)+(DI) D.16d x(CS)+(BX)+(DI)
4. 在指令 MOV AX,[1000H]中,源操作数的寻址方式为( )
A.立即寻址 B.直接寻址 C.段内间接寻址 D.寄存器寻址
5. 中断矢量表中存放的是( )
A. 中断类型号 B. 断点地址 C. 中断服务程序 D. 中断服务程序入口地址
6. 8086 的汇编语言指令系统中的条件转移指令可以使程序转移到( )
A. 段内的任何地方 B. 距该指令偏移地址为-32768~+32767的地方
C. 距该指令偏移地址为-128~+127的地方. D. 段外
7. 能定义ASCII码字符串的数据定义语句有( )
A. DB,DW,DD,DQ,DT B. DB,DW,DD C. DB, DW D. DB;
8. 若(AL)=87H,执行ADD AL,0F5H后,S,Z,C,O,P的状态为( )
A.SF=0,ZF=0,CF=1,OF=1,PF=0 B.SF=1,ZF=0,CF=1,OF=0,PF=1
C.SF=0,ZF=0,CF=0,OF=1,PF=0 D.SF=1,ZF=0,CF=1,OF=1,PF=1
9. 比较指令CMP( )
A. 专用于有符号数比较 B. 专用于无符号数比较
C. 专用于串比较 D. 不区分比较的对象是有符号数还是无符号数
10. 数据传送指令对标志位的影响为( )
A.都不影响; B.都影响;
C.除了SAHF,POPF,其它均不影响. D.除了控制标志位,其它均不影响
三、 判断题
( )31. 段间调用的子程序必须由伪操作FAR说明为远过程。
( )32. PC机以位作最小寻址单位。
( )33. 当SRC是立即数时,DST可以使用存散孝储器寻址。
( )34. 指定各个逻辑段偏移地址可以使用ORG伪指令。
( )35. LOOPE/LOOPZ是相等/为零时转移到标号,其退出条件是(CX)=0或ZF=0。
( )36. POP IP
( )37. 设327FH和0BFFFH为有符号数的补码表示,则327FH < 0BFFFH
( )38. 多个模块间的符号交叉引用要用伪指令PUBLIC和EXTRN说明
( )39. MOV AX,VAR1-VAR2+100
( )40. ADD [SI],50
四、 程序分析题
1. A DW 1234H
B DW 5678H
PUSH A
PUSH B
POP A
POP B
试回答:上述程序段执行后(A)= ,(B)=
2. 分析下面程序段,
MOV AL,200
SAR AL,1
MOV BL,AL
MOV CL,2
SAR AL,CL
ADD AL,BL
试问程序段执行后(BL)= (AL)=
3. STRING DB ‘ABCDEFGHIJ'
MOV AH,01 ;从键盘输入字符1~9
INT 21H
AND AL,0FH
DEC AL
XOR AH,AH
MOV BX,OFFSET STRING
ADD BX,AX
MOV BL,[BX]
MOV AH,02H ;显示输出
INT 21H
试回答:
(1)上述程序段的功能是什么?
(2)如从键盘输入字符‘4',程序段有什么结果?
4. 有如下程序:
AND AL,AL
JZ BRCH1
RCR AL,1
JZ BRCH2
RCL AL,1
INC AL
JZ BRCH3
上述程序运行后,试回答:
(1)当(AL)=时,程序转向BRCH1
(2)当(AL)=时,程序转向BRCH2
(3)当(AL)=时,程序转向BRCH3
5. 下列程序段完成什么工作?
DAT1 DB 30 DUP(?)
DAT2 DB 10 DUP(?)

MOV CX,10
MOV BX,20
MOV SI,0
MOV DI,0
NEXT:MOV AL,DAT1〔BX〕〔SI〕
MOV DAT2〔DI〕,AL
INC SI
INC DI
LOOP NEXT
6. 下面程序段执行完以后,AL的内容是什么?
MOV BX,00FFH
AND BX,0FFFH
OR BX,0F0FH
XOR BX,00FFH
7. 执行下列指令后,AX寄存器中的内容是什么?
START DW 10H,20H,30H,40H,50H
EE1 DW 3

MOV BX,OFFSET START
ADD BX,EE1
MOV AX,〔BX〕
8. 试分析下面程序段的功能是什么?
CMP AL,‘A’
JC OTHER
CMP AL,‘Z’+1
JNC OTHER
JMP LETTER

OTHER: ┇
LETTER: ┇

五、 程序填空题
1. 设AX,BX中的数一个为正数,一个为负数,下面程序段完成将正数送到PLW单元中存放,请将程序中所缺指令语句补上。
TEST AX,8000H
MOV PLW,BX
JMP DONE
K1:
DONE:
2. 现有下列数据段:
DATA SEGMENT
STR1 DB‘ABCDEFGHIJKL'
COUNT EQU -STR1
BUF DB COUNT DUP(0)
DATA ENDS
下面程序段是实现把STR1中所有字符逆向传送到BUF缓冲区(即STR1中第一个字符送到BUF的最后一个单元,STR1中最后一字符送到BUF的第一个单元)。试把程序中所空缺的指令填上。
MOV SI,OFFSET BUF-1
MOV DI,OFFSET BUF
MOV CX,COUNT
__ __
LOOP:MOVSB
__ __
LOOP LOP

或者()
六、 程序设计题
1. 编程序段计算SUM=∑ai=a1+a2+...+a20,已知a1......a20依次存放在以BUF为首址i=1的数据区,每个数据占两个字节,和数SUM也为两个字节。(要求用循环结构编写,循环控制采用计数控制)。(此题勿需书写源程序格式,只需把试题要求的有关指令序列书写出来。)

2. 设在DAT单元存放一个-9~+9的字节数据,在SQRTAB数据区中存放了0~9的平方值,请用直接查表法编写一个子程序,在SQRTAB中查找出DAT单元中数据对应的平方值送SQR单元。并写出主程序的调用方式。
数据段如下:
DATA SEGMENT
DAT DB XXH
SQRTAB DB 0,1,4,9,...81
SQR DB?
DATA ENDS

3. 试编写出把DX、AX中的双字右移四位的程序段。
4. 定义一个数据区,它包含有23H,24H,25H和26H四个字符数据,把这个数据区复制20次,并显示出复制结果。

汇编语言2005—2006学年第二学期期末考试复习题及参考答案
一、 填空
1. 十进制数369转换成二进制数为(101110001)2,转换成十六进制数为(171)16.
2. 计算机中的指令由( 操作码 )和( 地址码 )两部分组成。
3. 8086的地址总线有20根,寻址范围为( 1M )字节。
4. 下一条将要执行的指令的地址存放在寄存器( 指令指针寄存器 )中。
5. 写出IBM PC机的三种子程序返回的指令(RET), (IRET),(IRETD)。
6. 汇编语言源程序需经过(汇编)程序汇编,( 连接 )程序连接才能生成可执行文件。
7. 存储器某单元的地址表示为2314H:4132H,则它的偏移地址=(4132),物理地址=(27272H)
8. REP指令前缀与()指令配合使用。
9. 在显示器上查看和修改内存单元的内容可以使用DEBUG的( D )和( E )命令。
10. (AL)=BFH,要求屏蔽第0,1两位,则要执行指令( AND AL,3F );如果要求第0,1位变反,可使用指令( XOR AL,3F )
11. 宏汇编适合于(程序短),(参数多)的子功能段使用;
二、 选择题
1. 设字长N=16,有符号数7AE9H的补码表示为( D )
A. 9EA7H B. 76C4H C. 8417H D. 7AE9H
2. 比较有符号数3260H与0B425H的大小关系为( C )
A. 相等 B. 小于 C. 大于 D. 不能比较
3. 指令JMP WORD PTR [BX][DI]中转移的目标地址为( A )
A.16 d x(DS)+(BX)+(DI) B.16d x(ES)+(BX)+(DI)
C.16d x(SS)+(BX)+(DI) D.16d x(CS)+(BX)+(DI)
4. 在指令 MOV AX,[1000H]中,源操作数的寻址方式为( B )
A.立即寻址 B.直接寻址 C.段内间接寻址 D.寄存器寻址
5. 中断矢量表中存放的是( D )
A. 中断类型号 B. 断点地址 C. 中断服务程序 D. 中断服务程序入口地址
6. 8086 的汇编语言指令系统中的条件转移指令可以使程序转移到( A )
A. 段内的任何地方 B. 距该指令偏移地址为-32768~+32767的地方
C. 距该指令偏移地址为-128~+127的地方. D. 段外
7. 能定义ASCII码字符串的数据定义语句有( D )
A. DB,DW,DD,DQ,DT B. DB,DW,DD C. DB, DW D. DB;
8. 若(AL)=87H,执行ADD AL,0F5H后,S,Z,C,O,P的状态为( C )
A.SF=0,ZF=0,CF=1,OF=1,PF=0 B.SF=1,ZF=0,CF=1,OF=0,PF=1
C.SF=0,ZF=0,CF=0,OF=1,PF=0 D.SF=1,ZF=0,CF=1,OF=1,PF=1
9. 比较指令CMP( D )
A. 专用于有符号数比较 B. 专用于无符号数比较
C. 专用于串比较 D. 不区分比较的对象是有符号数还是无符号数
10. 数据传送指令对标志位的影响为( D )
A.都不影响; B.都影响;
C.除了SAHF,POPF,其它均不影响. D.除了控制标志位,其它均不影响
三、 判断题
( )31. 段间调用的子程序必须由伪操作FAR说明为远过程。 T
( )32. PC机以位作最小寻址单位。 F
( )33. 当SRC是立即数时,DST可以使用存储器寻址。 F
( )34. 指定各个逻辑段偏移地址可以使用ORG伪指令。 T
( )35. LOOPE/LOOPZ是相等/为零时转移到标号,其退出条件是(CX)=0或ZF=0。T
( )36. POP IP F
( )37. 设327FH和0BFFFH为有符号数的补码表示,则327FH < 0BFFFH F
( )38. 多个模块间的符号交叉引用要用伪指令PUBLIC和EXTRN说明 T
( )39. MOV AX,VAR1-VAR2+100 F
( )40. ADD [SI],50 F
四、 程序分析题
1. A DW 1234H
B DW 5678H
PUSH A
PUSH B
POP A
POP B
试回答:上述程序段执行后(A)= 5678H ,(B)= 1234H
2. 分析下面程序段,
MOV AL,200
SAR AL,1
MOV BL,AL
MOV CL,2
SAR AL,CL
ADD AL,BL
试问程序段执行后(BL)= 0E4H (AL)= 0DDH
3. STRING DB ‘ABCDEFGHIJ'
MOV AH,01 ;从键盘输入字符1~9
INT 21H
AND AL,0FH
DEC AL
XOR AH,AH
MOV BX,OFFSET STRING
ADD BX,AX
MOV BL,[BX]
MOV AH,02H ;显示输出
INT 21H
试回答:
(1)上述程序段的功能是什么? 根据从键盘输入的字符‘1’~‘9’,确定在显示器上显示STRING中第几个字符。
(2)如从键盘输入字符‘4',程序段有什么结果? 显示器显示字符‘D’
4. 有如下程序:
AND AL,AL
JZ BRCH1
RCR AL,1
JZ BRCH2
RCL AL,1
INC AL
JZ BRCH3
上述程序运行后,试回答:
(1)当(AL)=(AL)=0 时,程序转向BRCH1
(2)当(AL)=(AL)=1 时,程序转向BRCH2
(3)当(AL)=(AL)=-1 时,程序转向BRCH3
5. 下列程序段完成什么工作? 把DAT1+20存储单元开始的10个字节搬到DAT2开始的连续10个存储单元中
DAT1 DB 30 DUP(?)
DAT2 DB 10 DUP(?)

MOV CX,10
MOV BX,20
MOV SI,0
MOV DI,0
NEXT:MOV AL,DAT1〔BX〕〔SI〕
MOV DAT2〔DI〕,AL
INC SI
INC DI
LOOP NEXT
6. 下面程序段执行完以后,AL的内容是什么? 0F00H
MOV BX,00FFH
AND BX,0FFFH
OR BX,0F0FH
XOR BX,00FFH
7. 执行下列指令后,AX寄存器中的内容是什么? 3000H
START DW 10H,20H,30H,40H,50H
EE1 DW 3

MOV BX,OFFSET START
ADD BX,EE1
MOV AX,〔BX〕
8. 试分析下面程序段的功能是什么? 判断AL的内容,若为‘A’~‘Z’的大写字母时,程序转LETTER处理,否则转OTHER处理
CMP AL,‘A’
JC OTHER
CMP AL,‘Z’+1
JNC OTHER
JMP LETTER

OTHER: ┇
LETTER: ┇

五、 程序填空题
1. 设AX,BX中的数一个为正数,一个为负数,下面程序段完成将正数送到PLW单元中存放,请将程序中所缺指令语句补上。
TEST AX,8000H
JE K1或JZ K1
MOV PLW,BX
JMP DONE
K1: MOV PLW,AX
DONE:
2. 现有下列数据段:
DATA SEGMENT
STR1 DB‘ABCDEFGHIJKL'
COUNT EQU -STR1
BUF DB COUNT DUP(0)
DATA ENDS
下面程序段是实现把STR1中所有字符逆向传送到BUF缓冲区(即STR1中第一个字符送到BUF的最后一个单元,STR1中最后一字符送到BUF的第一个单元)。试把程序中所空缺的指令填上。
MOV SI,OFFSET BUF-1
MOV DI,OFFSET BUF
MOV CX,COUNT
__ CLD__
LOOP:MOVSB
__ SUB SI,2__
LOOP LOP

或者(STD/ADD DI,2)
六、 程序设计题
1. 编程序段计算SUM=∑ai=a1+a2+...+a20,已知a1......a20依次存放在以BUF为首址i=1的数据区,每个数据占两个字节,和数SUM也为两个字节。(要求用循环结构编写,循环控制采用计数控制)。(此题勿需书写源程序格式,只需把试题要求的有关指令序列书写出来。)
程序段:MOV AX,0
MOV BX,OFFSET BUF
MOV CX,20
LOP:ADD AX,[BX]
INC BX
INC BX
LOOP LOP
MOV SUM,AX

2. 设在DAT单元存放一个-9~+9的字节数据,在SQRTAB数据区中存放了0~9的平方值,请用直接查表法编写一个子程序,在SQRTAB中查找出DAT单元中数据对应的平方值送SQR单元。并写出主程序的调用方式。
数据段如下:
DATA SEGMENT
DAT DB XXH
SQRTAB DB 0,1,4,9,...81
SQR DB?
DATA ENDS

STACL1 SEGMENT PARA STACK
DW 20H DUP(?)
STACK1 ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK1
START: MOV AX,DATA
MOV DS,AX

CALL SUBROT

MOV AH,4CH
INT 21H
SUBROT PROC
PUSH AX
PUSH BX
LEA BX,SQRTAB
MOV AL,DAT
TEST AL,80H
JNS NEXT
NEG AL
NEXT: XLAT SQRTAB
MOV SQR,AL
POP BX
POP AX
RET
SUBROT ENDP
CODE ENDS
END SRART
3. 试编写出把DX、AX中的双字右移四位的程序段。
MOV CL,04
SHR AX,CL
MOV BL,DL
SHR DX,CL
SHL BL,CL
OR BL,AH
4. 定义一个数据区,它包含有23H,24H,25H和26H四个字符数据,把这个数据区复制20次,并显示出复制结果。
DATA SEGMENT
PATTERN DB 23H,24H,25H,26H
DISPLAY DB 80 DUP(‘ ’),‘$’
DATE ENDS
CODE SEGMENT

CLD
LEA SI,PATTERN
LEA DI,DISPLAY
MOV CX,80
REP MOVSB
MOV AH,09H
LEA DX,DISPLAY
INT 21H
RET
CODE ENDS