发布时间 : 星期二 文章汇编语言部分指令集更新完毕开始阅读
MUL DX
MOV DX, POP AX
MOV AL, AND AL, 0FH ADD DL, AL ADC DH, 0 JMP PRG1
PRG2:MOV result, DX MOV AX, 4C00H INT 21H CSEG ENDS
END BEGIN 六、程序改错题(10分)
以下程序中存在若干错误。请将错误所在划线指出,并将正确的结果写在相应代码行的后面(在本代码行中)。若误将正确代码行(或其成分)划线,则每错划一处扣1分,直至本题得分为0止(能正确标识错误则记1分/错)。
;程序功能:将一个字节数据中的低4位转换为ASCII码 DSEG SEGMENT DGHEX DB 5AH RESULT DB ? DSEG ENDS ;
CSEG SEGMENT
ASSUME CS:CSEG,DS:DSEG START:MOV AX, DSEG MOV DS, AX
MOV AX, DGHEX AND AL, 0FFH CMP AL, 9 JB PRG1
ADD AL, ’A’- 10 PRG1:ADD AL, 48
MOV RESULT, AL MOV AL, 4CH INT 21H CSEG ENDS
END START
七、程序设计题(10分)
试题给出了一个欠完整的汇编语言程序,请基于此给定程序,回答所是各有关问题。 说明:(1)程序功能:将指定输入缓冲区中由十进制数字字符组成的数字串转换为一
个16位的无符号二进制数;输入缓冲区的数据组织格式满足DOS 0A 号 系统调用的要求;假定输入缓冲区中的内容已经过检查,确认无错。
(2)参数规定:输入缓冲区首址经堆栈传入子程序;子程序的处理结果经AX
寄存器返回。
(3)要求使用“结构”抽象子程序入口处堆栈栈顶的内容。 问题:(1)给出子程序的详细说明信息;(1分) (2)画出子程序的程序流程图;(3分) (3)补充完善子程序的代码。(6分)
已有的子程序代码(含需要补充的内容的说明)如下: ;
…… ;说明“结构”类型(1分) ;
BCDTOB PROC FAR PUSH BP
MOV BP, SP
…… ;保护寄存器(2分) MOV DS, [ BP ].STRSEG MOV BX, [ BP ].STROFF INC BX
MOV AL, [ BX ] XOR AH, AH MOV SI, AX
…… ;清零DX和DI(1分) INC BX
MOV DL, [ BX ][ DI ] AND DL, 0FH BCDTOB1:INC DI
CMP DI, SI JZ BCDTOB2 PUSH DX
MOV AX, 10 MUL DX
MOV DX, AX
MOV AL, [ BX ][ DI ] AND AL, 0FH ADD DL, AL ADC DH, 0 POP AX
JMP BCDTOB1 BCDTOB2:MOV AX, DX
…… ;恢复寄存器(2分) RET 4 BCDTOB ENDP
湘潭大学2009年上 学期2007级《汇编语言程序设计》
得 分 一、判断题(每小题1分,共10分)
以下每小题给出了一个关于X86汇编语言/汇编语言程序设计的说法/提法,请判定其正确性。正确的,记“√”;否则,记“×”。记于题后的括号中。
1. 在X86汇编语言中,“条件语句”是说明性语句,而非可执行语句。 ( ) 2.在X86汇编语言中,“条件结构”可以出现在“宏指令”的“宏定义体”中。( ) 3. 在X86汇编语言中,伪指令语句EXITM 的作用是结束一个“重复块”。( ) 4. 在80x86的“保护模式”下,“段寄存器”的内容是一个存储段的“段值”。( ) 5. 一条“宏指令”的定义始于伪指令MACRO、结束于伪指令ENDM 。( ) 6. 在80x86的“保护模式”下,存储段的“段描述符”的长度均为8个字节。( ) 7. 在X86汇编语言中,伪指令 STRUC是供程序员定义结构变量时使用的。( ) 8. 在X86汇编语言中,伪指令RECORD是供程序员定义记录变量时使用的。( ) 9. 在X86汇编语言中,操作符 DUP 可供程序员在程序中引入数组时使用。( ) 10. 在X86汇编语言中,伪指令PURGE 的作用是局部化宏定义中的标号。( ) 得 分 二、选择题(每小题2 分,共 20 分)
以下各题中,每题含 4 个选项,其中仅有一个是正确答案,请将正确答案 对应选项的符号(A、B、C或D)记于题后的括号中。
1. 在以下给定的X86汇编语句中,不正确的X86汇编语言语句是: ( )
A. REP MOVBS B. REPNZ SCASW C. REPZ LODSB D. REPNZ CMPSW
2. 在以下给定的X86汇编语句中,不正确的X86汇编语言语句是: ( ) A. CALL FAR PTR BYTE B. CALL FAR PTR [ SI ] C. CALL FAR PTR HTOASC D. CALL FAR PTR [ BX + DI ] 3. 在以下给定的X86汇编语句中,不正确的X86汇编语言语句是: ( )
A. ROR [ BP + DI + 30 ], CL B. SHL [ BX + 100H ], 2 C. SAR [ BX + SI + 30H ], 1 D. RCL ES:[ BX + 100 ], CL 4. 在以下给定的X86汇编语句中,不正确的X86汇编语言语句是: ( )
A. AND SI, SS:[ BX + SI + 3 ] B. TEST DX, [ AX + DI + 100H ] C. XOR DI, ES:[ BP + SI + 45H ] D. OR BX, [ BP + DI + 100H ] 5. 在以下给定的X86汇编语句中,不正确的X86汇编语言语句是: ( )
A. XCHG SI, SS:[ BX + SI + 400 ] B. XCHG DL, BYTE PTR ABCD C. XCHG DS, AX D. XCHG DX, BX
6. 在以下给定的X86汇编语句中,不正确的X86汇编语言语句是: ( )
A. MOV AX, SS:[ BX + 100H ] B. MOV DS, WORD PTR ABCD C. MOV [ BX ], WORD PTR ABCD D.MOV ES, [ BX + DI + 100H ] 7. 在以下给定的X86汇编语句中,不正确的X86汇编语言语句是:( )
A. ADD DI, WORD PTR ABC B. ADC SI, [ BX + DI + 1234H ] C. ADD BX, [ BP + 1234H ] D. ADC DS, [ BX + DI + 1234H ] 8. 在以下给定的X86汇编语句中,不正确的X86汇编语言语句是: ( )
A. SUB DI, SS:[ BX + 1234H ] B. SBB SI, WORD PTR ABCD C. SUB DX, [ BX + DI + 1234H ] D. SBB AX, BYTE PTR ABCD 9. 在以下给定的X86汇编语句中,不正确的X86汇编语言语句是: ( )
A. MUL BYTE PTR [ BX + 100H ] B. MUL OFFSET ABCD C. MUL WORD PTR ABCD D. MUL [ BX + DI + 1234H ]
10. 在以下给定的X86汇编语句中,不正确的X86汇编语言语句是: ( )
A. DIV SEG ABCD B. DIV [ BX + DI + 1234H ] C. DIV WORD PTR ABCD D. DIV BYTE PTR [ BX + 100H ] 得 分 三、填空题(每空1 分,共20分)
根据题意在下列各题的括号内填入正确的内容。要求:字迹清晰、工整;用语准确。 1. X86微处理器中8个8位的“数据寄存器”的符号名分别是( )、( )、( )、
( )、( )、( )、( )和( )。
2. X86微处理器中除了“数据寄存器”以外的4个16位的“通用寄存器”的符号名分别是()、()、()和()。
3. X86微处理器“标志寄存器”中的6个“运算结果标志”的符号名分别是( )、( )、( )、( )、( )和( )。
4. 在8086的数据寄存器中,仅有一个寄存器可用在存储器操作数的地址表达式中,该寄存器的符号名是( )。
5. 在X86微处理器的“保护模式”下,为每一个存储段确立了一个硬件识别的数据结构以描述其系统管理信息,该数据结构被称为( )。 得 分 四、计算题(每小题4分,共20分)
以下各题的每题给出了一个程序片断,请按要求在相应的括号内填入计算机执行程序的
相应结果。
1. 程序片断1: ……
MOV AX, 4567H
ADD AL,AH ;(OF = ,SF = ) DAA ;(AL = ,AF = ) ……
2. 程序片断2: ……
MOV AX, 39H
ADD AL, 37H ;(AF = ,PF = ) AAA ;(AH = ,AL = ) ……
3. 程序片断3: ……
MOV AX, 1034H STC
SBB AL, 8 ;(AL = ,AF = ) AAS ;(AL = ,AH = ) ……
4. 程序片断4: ……
MOV AX, 946BH
AND AL, AH ;(ZF = ,AL = ) MOV CL, AL INC CL
SAR AH, CL ;(CF = ,AH = ) ……