IBM-PC汇编语言程序设计试题(5) 下载本文

内容发布更新时间 : 2024/11/5 23:31:30星期一 下面是文章的全部内容请认真阅读。

2.下面程序完成的是两个无符号数的相乘,但采用重复相加的方法实现。请在空格处填上指令,使程序完整。

DATA SEGMENT AV1:XOR AX,AX DA1 DB 5AH MOV CH,0 DA2 DB 26H AV2:

DA3 DW ? (5) DATA ENDS ADC AH,0 ………

MOV BL,DA1 (6) MOV CL,DA2 MOV DA3,AX CMP CL,BL HLT (4) XCHG CL,BL 五、编制程序题(14分)

1.编写程序段计算:(Z-X*Y+540)/X,其中X、Y、Z、均为16位带符号数,已分别装入X、Y、Z、单元中,要求上式计算结果的商存入AX、余数存入DX寄存器.(勿须写出源程序格式,只须写出指令序列,本小题6分).

5

2. 设有10个学生的成绩分别是76,69,84,90,73,88,99,63,100和80分。试编制一个汇编语言程序统计60~69分,70~79分,80~89分,90~99分和100分的人数,分别存放到S6,S7,S8,S9和S10单元中(要求写出完整的汇编语言程序,本小题8分)。

浙江理工大学2009—2010学年第 1 学期

《汇编语言A》期末试卷( B)卷标准答案和评分标准

一、单项选择题(答对一题2分)

1.B 2.B 3.A 4.A 5.D 6.C 7.A 8.C 9.A 10.C 11.D 12.C 13.A 14.C 15.C 二、简答题

1.(1)用编辑软件(例如:EDIT)编辑扩展名为 .ASM的汇编语言源程序(1分) (2)用汇编程序MASM汇编源程序产生目标文件扩展名为.OBJ(1分)

(3 ) 用连接程序LINK连接目标程序产生可执行文件,扩展名为 .EXE(1分) (4 ) 用DOS命令直接键入文件名运行该可执行程序,或进入DEBUG运行(1分) 2.(1 ) ((SP)+1,(SP))→IP 也可以写为栈顶内容→IP , SP+2→SP

或 IP←POP( )(2分)

(2 ) 栈顶内容→IP , SP+2→SP 栈顶内容→CS , SP+2→SP

或IP←POP( ),CS←POP( ) (2分)

3. (1 ) ADC AL, 52H(2分)

(2 ) MOV BX, SEG TABLE(2分)

4. 当中断发生时,由中断机构自动完成哪些动作?(中断过程) 取中断类型号、标志寄存器内容入栈(1分)、当前代码段寄存器入栈、前指令计数器入栈(1分)、禁止硬件中断和单步中断、从中断向量表中取4×N的字内容送IP及4*N+2中的字内容送CS、转中断处理程序(2分)。 5. SEND MACRO DA1, DA2,DA3,MIN

LOCAL NEXT, EXIT MOV AL,DA1 MOV BL,DA2

MOV CL,DA3

CMP AL,BL JLE DON1 MOV AL,BL DON1:CMP AL, CL

JLE DON2 MOV AL,CL

DON1:MOV MIN,AL

ENDM(4分) 三、程序分析题

1.AL=5CH (2分) BL=03H(2分) CL=5FH(2分) 2.(1)共占用10个字节(3分) (2)BASUB=4(3分) 3.(1)实现2+4+6+……+100(3分) (2)AX=09F6H或2550(3分) 4.(1)0,1,2,3,4,5,6,7,8,9(3分)

(2)将A2单元开始的10个数据传送到A1开始的10个字节单元中(3分) 四、1.(1) JGE NEXT;(2) MOV AL,[BX];(3)JNZ LOOP

7

2.(4) JBE AV1;(5)ADD AL,BL;(6)LOOP AV2 五、1.MOV AX,X

IMUL Y

MOV CX,AC MOV BX,DX MOV AX,Z CWD

SUB CX,AX SBB BX,DX ADD CX,540 ADC BX,0 MOV AX,CX MOV DX,BX IDIV X(6分)

2. DSEG SEGMENT

RECORD DW 76,69,84,90,73,88,99,63,100,80 S6 DW 0 S7 DW 0 S8 DW 0 S9 DW 0 S10 DW 0 DSEG ENDS CSEG SEGMENT

MAIN PROC FAR

ASSUME CS: CSEG, DS: DSEG

START: PUSH DS

SUB AX, AX PUSH AX

MOV AX, DSEG MOV DS, AX

BEGIN: MOV CX, 10

CALL COUNT RET

MAIN ENDP COUNT PROC NEAR

MOV SI, 0

NEXT: MOV AX, RECORD[SI]

MOV BX, 10 DIV BL MOV BL, AL SUB BX, 6 SAL BX, 1 INC S6[BX] ADD SI, 2 LOOP NEXT RET

COUNT ENDP CSEG ENDS

END START(8分)