09级汇编语言程序设计试卷A - 图文 下载本文

说明: 本试卷将作为样卷直接制版胶印,请命题教师在试题之间留足答题空间。

POP DS POP BP RET VIDSTOUW ENDP 七、程序设计题(10分) 得 试题给出了一个欠完整的X86汇编语言远过程,请基于此给定汇编语言程分 序,回答试题给出的各有关问题。 说明:(1)程序功能:比较字符串1(STR1)和字符串2(STR2); (2)参数规定:STR1和STR2的指针均为长指针,经过堆栈传入子程序; (3)设字符串均以0结尾; (4)要求使用“结构”抽象子程序入口处堆栈栈顶的内容。 (5)用AX 返回比较结果。 问题:(1)给出相应结构类型的类型说明(2分) (2)补充完善子程序的代码。(4分) (3)以注释的形式给出子程序的详细设计与使用说明(4分) 已有的子程序代码(含需要补充的内容的说明)如下: ; PARM STRUC ;说明“结构”类型(2分) BPREG DW ? ;对应BP寄存器保存单元 RETADR DD ? ;对应返回地址 ????STR1 OFF DW ? ????STR1 SEG DW ? ????STR2 OFF DW ? ????STR2 SEG DW ? PARM ENDS ; ;过 程 名:STRCMP 给出子程序的详细设计与使用说明(4分) ;功 能:比较字符串1(STR1)和字符串2(STR2) ;参 数: ;返 回 值: ;说 明: 字符串均以0结尾 ;调用示例: ??PUSH.<> ; ?? ; CALL FAR PTR STRCMP ; STRCMP PROC FAR PUSH BP MOV BP, SP ??PUSH ES,DI,CX,DX,DS,SI ;保护寄存器(2分) CLD XOR AL, AL ;测STR1的串长 MOV ES, [ BP ].STR1SEG MOV DI, [ BP ].STR1OFF MOV CX, 0FFFFH REPNZ SCASB

(第 6 页 共 8 页)

说明: 本试卷将作为样卷直接制版胶印,请命题教师在试题之间留足答题空间。

NOT CX MOV DX, CX MOV ES, [ BP ].STR2SEG ;测STR2的串长 MOV DI, [ BP ].STR2OFF MOV CX, 0FFFFH REPNZ SCASB NOT CX CMP DX, CX JZ PRG2 JC PRG1 MOV AX, 1 JMP PRG4 PRG1:MOV AX, – 1 JMP PRG4 PRG2:MOV DS, [ BP ].STR1SEG ;实现STR1和STR2比较 MOV SI, [ BP ].STR2OFF MOV ES, [ BP ].STR2SEG MOV DI, [ BP ].STR2OFF DEC CX REPZ CMPSB OR CX, CX JNZ PRG3 XOR AX, AX JMP PRG4 PRG3:MOV AL, [ SI – 1 ] MOV AH, [ DI – 1 ] CMP AL, AH JC PRG1 MOV AX, 1 PRG4:???? ;恢复寄存器(2分) RET STRCMP ENDP

(第 7 页 共 8 页)

说明: 本试卷将作为样卷直接制版胶印,请命题教师在试题之间留足答题空间。

(第 8 页 共 8 页)