汇编语言程序设计试卷2006A答案

发布时间:2024-11-18

一、单项选择题(每小题1分,共15分)

1.设AL=57H,BL=24H,执行指令SUB AL,BL后,寄存器内容为( B )。

A.AL=57H,BL=24H C.AL=57H,BL=33H

B.AL=33H,BL=24H D.AL=33H,BL=0

2.设CL=8,AL=0C8H,执行SAR AL,CL后,AL中的数据是( A )。

A.0FFH B.80H C.00H D.0FEH

3.指令指针寄存器是( A )。

A.IP B.SP C.BP D.PSW

4.用REPE SCASB指令对某字符串进行扫描,若当扫描结束时CX≠0,则表示( B )。

A.在字符串中有一个与(AL)不同的字符 B.在字符串中找到了第一个与(AL)不同的字符 C.在字符串中有一个与(AL)相同的字符 D.在字符串中找到了第一个与(AL)相同的字符

5.下面的数据传送指令中,错误的指令是( D )。

A.MOV SS:[BX+DI],1000H B.MOV DX,1000H C.MOV WORD PTR[BX],1000H D.MOV DS,2000H

6.下面指令执行后,变量DAB中的内容是( C )。 DAW DW 2A05H DAB DB 0FAH

. . .

MOV AL,BYTE PRT DAW SUB DAB,AL

A.0DAH B.0FAH C.0F5H D.0D0H 7.执行下列指令后,正确的结果是( B )。

MOV AL,100

MOV BL,-2

A.AL=100H B.AL=64H C.AL=64H D.AL=100H BL=02H BL=0FEH BL=82H BL=0FEH 8.测试BL寄存器内容是否与数据4FH相等,若相等则转NEXT处执行,可实现的方法是( B )。

A.TEST BL,4FH B.XOR BL,4FH JZ NEXT JZ NEXT

C.AND BL,4FH D.OR BL,4FH JZ NEXT JZ NEXT

9.设 SP初值为2000H,执行指令PUSH AX后,SP的值是( D )。 A.1FFFH B.1998H C.2002H D.1FFEH 10.DA1 EQU BYTE PTR DA2 DA2 DW 0ABCDH ┇ SHL DA1,1 SHR DA2,1

上述指令序列执行后,DA2字存储单元的内容是( C )。 A.0ABCDH B.0AB9AH C.55CDH D.559AH 11. 下面指令执行后,改变AL寄存器内容的指令是( D )。 A.TEST AL,02H B.OR AL,0 C.CMP AL,BL D.AND AL,BL

12. 有指令MOV AX, 1234H,指令中的立即数1234H是存储在( B )。

A. 数据段 B. 代码段 C. 附加段 D. 堆栈段

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

MOV BYTE PTR Y,AL

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

14.BUF1 DB 3 DUP(0,2 DUP (1,2),3) COUNT EQU $ -BUF1

符号COUNT的值是( B )。

A. 6 B. 18 C. 16 D. 8

15.已知AX,BX中均为带符号数,当进行字相除时,下面指令或指令序列正确的是( B )。

A. DIV BX B. CWD C. XOR DX,DX D. CBW IDIV BX IDIV BX IDIV BX 二、填空题(每空2分,共20分)

16.有指令MOV CL,N,要使该指令合法,则N的最大值是 255 ,最小值是 -128 。(用十进制数表示)

17.8086/8088CPU允许最大的存储空间为1MB,因此CPU的地址总线是 20位。 18.指令MOV AX,SEG BUF的功能是把送到AX中。 19.已知存储器某单元的地址表示为2314H:4132H,则它的

偏移地址= 4132H ,物理地址= 27272H 。

20.当控制标志IF等于 1 时,CPU处于开中断状态,能够响应外设的中断请求。 21. 在8086/8088CPU专用寄存器中, IP 寄存器内容始终指向下一条指令的首地址,此时该指令物理地址计算式是 CS*16+IP 。

22.要清除AX中的D15--11位,需采用 AND AX,07FFH 指令来实现。 三、简答题(每小题5分,共20分) 23.D1 DB 20H DUP(?)

D2 DW D1

请写出用一条指令实现取D1的偏移地址至SI中的三种方法。

LEA SI,D1 (1分)

MOV SI,OFFSET D1 (2分)

MOV SI,D2 (2分)(不论顺序)

24.下列每组指令中的两条指令有否区别?若有,请说出它们的不同点。 (1) MOV AX,OFFSET TABLE和LEA AX,TABLE 答:没有区别 (2) JMP SHOPT L1 和JMP NEAR PTR L1

答:前者转移量在127至-128之间,后者在同一代码段内跳转。

(3) MOV AX,[BX] 和MOV AX,BX

答:前者寄存器间接寻址,把以BX内容为地址的字存储单元中的内容送AX; 后者寄存器寻址,把BX中的内容送AX

(4) SUB DX,CX 和CMP DX,CX

答:前者是减法指令,得到的差存入DX中;

后者为比较指令,得到的差不保存,DX内容保持原值不便变。

(5) MOV [BP][DI],AL 和MOV DS:[BP][DI],AL

答:前者目的操作数表示的内存单元位于堆栈段;

后者用段前缀,内存单元位于数据段

25.什么是中断向量?中断N的中断向量的地址是多少?编写用DOS中断调用为中断N(中断服务子程序为INTSON)设置中断向量的程序段。

答:中断服务子程序在存储器中存放的入口地址(首地址),包括段地址CS及偏移地址IP,称此中断服务子程序的中断向量。

中断N的中断向量的地址是 [N*4,N*4+2]。

MOV AX,SEG INTSON MOV DS,AX

MOV DX,OFFSET INTSON MOV AL,N MOV AH,25H

INT 21H

26.已知堆栈段寄存器SS的内容是3000H,堆栈指针寄存器SP的内容是0FFEEH,先执行两条把8057H和0F79H分别进栈的PUSH指令,再执行一条POP指令。试画出堆栈区内容和SP指针的变化过程示意图(标出存储单元的物理地址)。 SP

四、程序分析题(每小题5分,共20分) 27.程序段如下:

MOV AX,2 MOV BX,3 MOV DX,3 MOV CX,4

L20: INC AX

ADD BX,AX SHR DX,1 ( ) RET

试说明在上面括号中分别添入下面三种指令,程序段执行完后,AX、BX、CX和DX四个寄存器的内容分别是什么?

(1)LOOP L20 答:AX=6, BX=21, CX=0, DX=0 (2)LOOPE L20 答:AX=3, BX=6, CX=3, DX=1 (3)LOOPNE L20 答:AX=4, BX=10, CX=2, DX=0

28.下面程序段的功能是: 在红色背景下显示16个黄色闪烁的星号 。

MOV AH,09H MOV AL,‘*’ MOV BH,0 MOV BL,0CEH MOV CX,10H INT 10H

29.执行下列指令后,(AX)= 0ABB0H ;(DX)= 000DH 。 MOV AX, 0ABCDH MOV CL, 4 ROR AX, CL DEC AX

MOV CX, 16 MUL CX

30. 下面指令序列执行后,AL= 0F1H ,BL= 0FEH 。

MOV AL,0FH MOV BL,0FEH XOR AL,BL

五、程序设计题(第1小题10分,第2小题15分)

31.编写一程序,把COM1口初始化为9600波特、字长8位、2位终止位,奇校验。然后从COM1口读入字符并把它们显示出来。

要求:若字符没有准备好则等待,如果传输有误,则显示出错信息“Transfers Error!”。

DATA SEGMENT

ERR_MESS DB ‘Transfers Error!’, ‘$’ DATA ENDS

CODE SEGMENT MAIN PROC FAR

ASSUME CS:CODE, DS:DATA START:

PUSH DS XOR AX, AX PUSH AX MOV AH, 0

MOV AL, 11101111B MOV DX,0 INT 14H CHECK:

MOV AH,3 MOV DX, 0 INT 14H

AND AH,01H JZ CHECK MOV AH,2 MOV DX,0

INT 14H

TEST AH,80H JNZ ERROR AND AL,7FH

MOV BL,0 ;或 MOV DL,AL MOV AH,0EH ; MOV AH,02H INT 10H ; INT 21H JMP SHORT CHECK ERROR:

MOV AX, SEG ERR_MESS MOV DS, AX

MOV DX, OFFSET ERR_MESS MOV AH, 09H INT 21H RET MAIN ENDP CODE ENDS END START

32.已知在以ARRAY为首地址的数据区中存放10个带符号字数据:

ARRAY DW 1,2,-1,3,4,-2,-3,4,5,-6

编程将ARRAY分成两个数组:正数数组P_ARY和负数数组N_ARY,并分别显示正数项个数和负数项个数。

要求:源程序格式完整。

DATA SEGMENT

ARRAY DW 1, 2, -1, 3, 4, -2, -3, 4, 5, -6 P_ARY DW 10DUP(?) N_ARY DW 10DUP(?) DATA ENDS

CODE SEGMENT MAIN PROC FAR

ASSUME CS:CODE, DS:DATA START:

PUSH DS XOR AX, AX PUSH AX

MOV CX,10

MOV BX,OFFSET ARRAY MOV SI,OFFSET P_ARY MOV DI,OFFSET N_ARY MOV DX,0 NEXT:

MOV AX,[BX] CMP AX,0 JL N_SAVE INC DL

MOV [SI],AX

JMP SHORT NEXT0 N_SAVE:

INC DH

MOV [DI],AX NEXT0:

LOOP NEXT MOV AH,02H INT 21H

MOV DL,0AH INT 21H

MOV DL,ODH INT 21H MOV DL,DH INT 21H RET MAIN ENDP CODE ENDS END START

汇编语言程序设计试卷2006A答案.doc 将本文的Word文档下载到电脑

    精彩图片

    热门精选

    大家正在看

    × 游客快捷下载通道(下载后可以自由复制和排版)

    限时特价:7 元/份 原价:20元

    支付方式:

    开通VIP包月会员 特价:29元/月

    注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
    微信:fanwen365 QQ:370150219