汇编语言程序设计第3阶段测试题 下载本文

内容发布更新时间 : 2024/5/16 1:41:37星期一 下面是文章的全部内容请认真阅读。

C、CX≠0,且ZF=0 D、CX≠0,或ZF=1

答案:B

7.已知RET指令是属性为NEAR子程序中的返回指令,执行RET之前SP=100H,执行后SP的内容为 。

A.100H 答:B

B.102H

C.98H

D.0FEH

8. 伪指令用来指定宏局部标号。

A.PUBLIC B.LOCAL C.EXTRN D.ASSUME

答:B

二、阅读下列程序,并回答问题(每题10分,共30分) 1. 有下列程序段:

BUF DB 0CH

MOV AL,BUF

CALL FAR PTR HECA

.

.

PROC FAR CMP AL,10

Kl

AL,7 AL,30H

HECA

JC ADD K1: ADD

MOV DL,AL MOV AH,2 INT

21H

RET HECA ENDP

问:程序执行后,DL=?屏幕上显示输出的字符是什么? 答:DL=43H,屏幕上显示输出的字符是‘C’。

2、阅读下列程序

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)=_________

6

答案:(AL)=88H (CL)=80H

3、设程序中的MM为一带符号数,阅读下列程序并回答下列问题 程序: DATA SEGMENT BUF1 DB MM BUF2 DB ?

DATA ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START PROC

MOV AX,DATA MOV DS,AX

MOV BX,OFFSET BUF1 MOV DI,OFFSET BUF2 MOV AH,[ BX ] OR AH,AH JZ ZERO JL MINUS MOV AH,01H JMP ASSIGN ZERO:MOV AH,00H JMP ASSIGN MINUS: MOV AH,0FFH ASSIGN:MOV [ DI ],AH

INT 20H ;返回DOS

START ENDP CODE ENDS END START

问题:A:该程序完成的操作是(1);

B:当MM为80H时,程序执行后BUF2单元的内容为(2);

C:若程序中指令JL MINUS改为JNL MINUS且MM为00H时,则程序执行后BUF2单

元的内容为(3)

答案:(1)判定MM的正负。

当MM=0时BUF2置为0; 当MM>0时BUF2置为1

当MM<0时BUF2置为-1 (2)-1 (3)0

三、根据题意完善程序(每空3分,共27分)

下面的程序把缓冲区NUM中的十六进制值转换为4个ASCII码,依次放入缓冲区STRING中,并显示输出,请根据题意,完善该程序。

7

DATA SEGMENT NUM DW 45AFH

STRING DB 4 DUP(?),‘$’ DATA ENDS

STACK SEGMENT PARA STACK ‘STACK’ DB 100 DUP(?) STACK ENDS CODE SEGMENT ASSUME (1) BEGIN:MOV AX,DATA MOV DS,AX LEA BX,STRING CALL BINHEX LEA (2),STRING MOV AH,9 INT 21H MOV AH,(3) INT 21H BINHEX PROC

MOV AX,NUM MOV DI,BX ADD DI,3 MOV DX,AX MOV CX,4 AGAIN: AND AX,0FH CMP AL,0AH (4)

ADD AL,‘a’―‘0’―0ah ADDZ:ADD AL,‘0’ MOV [ DI ],AL DEC (5) PUSH CX MOV CL,4 SHR DX,CL MOV AX,DX POP (6)

LOOP AGAIN

(7) BINHEX (8) CODE ENDS END (9) 8

答案:

(1)CS:CODE,DS:DATA,SS:STACK (2)DX (3)4CH

(4)JL ADDZ / JB / JNAE / JC / JL / JNGE (5)DI (6)CX (7)RET (8)ENDP (9)BEGIN

四、编程题(共19分)

编写一个完整程序,如果字节变量 TESTONE和 TESTTWO相等,则调用 ALLSAME子程序在屏幕上显示字符‘*’,否则调用 NOTSAME子程序在屏幕上显示字符‘&’。 答案:DSEG SEGMENT

TESTONE DB ?

TESTTWO DB ? DSEG ENDS

CSEG SEGMENT

ASSUME CS:CSEG,DS:DSEG START:MOV AX,DSEG

MOV DS,AX

MOV AL,TESTONE CMP AL,TESTTWO JE CALLSAME

CALL NOTSAME JMP CONTINX

CALLSAME:CALL ALLSAME CONTINX:MOV AH,4CH

INT 21H

ALLSAME PROC

MOV DL,‘*’ MOV AH,2

INT 21H

RET

ALLSAME ENDP NOTSAME PROC

MOV DL,‘&’

MOV AH,2 INT 21H RET

NOTSAME ENDP CSEG ENDS

END START

9