求汇编期末考试题

求汇编期末考试题,第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 <0BFFFHF

( )38. 多个模块间的符号交叉引用要用伪指令PUBLIC和EXTRN说明 T

( )39. MOV AX,VAR1-VAR2+100 F

( )40. ADD [SI],50F

四、 程序分析题

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

为了你好不给你编,给你思路,先定义一个数组存放全班同学的考试成绩(array db 56,60,80,90......),再定义一个count用于存放数组元素个数(count EQU-arary)然后把薯基指针指向数组首元素,一个个开始相虚盯加,结果保存在一个寄存差手和器中,然后使用div指令求平均数(注意div指令的使用注意点)。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/yw/12438990.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存