实验一 熟悉汇编语言上机环境
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一熟悉汇编语言上机环境
一、实验目的
熟悉在微机上建立、汇编、连接、调试和运行汇编语言程序的全过程。
二、实验要求
1.仔细阅读本实验教程的第一章和第二章;
2.学会使用EDIT建立汇编语言源程序文件;
3.学会使用MASM将汇编语言源程序编译为目标程序的两种方法;
4.学会使用LINK将目标程序连接为可执行程序的两种方法;
5.学会使用DEBUG中的U、D、G命令。
三、实验举例
【例3.1】 编辑、汇编、连接、执行下列程序,观察实验结果。
【程序功能】该程序的功能是利用BIOS功能调用,从键盘上接收若干个字符,并将它们的ASCII码与键盘扫描码以十六进制的形式显示出来,当按下
【步骤一】 用EDIT编辑源程序,并以EXAM1.ASM为文件名存入磁盘。
程序清单如下:
SSEG SEGMENT STACK
STK DB 80H DUP(?)
SSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG,SS:SSEG
HTOA PROC NEAR ;该子程序的功能是将AL内容转换为ASCII码
AND AL,0FH
CMP AL,10
JC HTOA1
ADD AL,07
HTOA1: ADD AL,30H
RET
HTOA ENDP
BHTOA PROC NEAR ;该子程序的功能是将AL内容转换为ASCII码
PUSH CX
MOV CH,AL
MOV CL,04
SHR AL,CL
CALL HTOA
MOV AH,AL
MOV AL,CH
CALL HTOA
POP CX
RET
BHTOA ENDP
DISASC PROCN EAR ;该子程序的功能是在光标处显示AL中的字符
PUSH AX
MOV AH,14
INT 10H
POP AX
RET
DISASC ENDP
DISAL PROC NEAR ;该子程序的功能是显示AL中的内容
PUSH AX
CALL BHTOA
XCHG AH,AL
CALL DISASC
MOV AL,AH
CALL DISASC
POP AX
RET
DISAL ENDP
BIOS: PUSH DS ;主程序
XOR AX,AX
PUSH AX
AGAIN: MOV AH,0
INT 16H
PUSH AX
CALL DISAL
MOV AL,'-'
CALL DISASC
MOV AL,AH
CALL DISAL
MOV AL,' '
CALL DISASC
POP AX
CMP AL,03H
JNZ AGAIN
MOV AH,4CH
INT 21H
CSEG ENDS
END BIOS
源程序输入完成后,按
【步骤二】 用宏汇编程序MASM对汇编语言源程序EXAM1.ASM进行汇编,生成文件名为EXAM1.OBJ的目标程序。
操作如下:
C:>\MASM EXAM1;↙
屏幕显示如下信息:
Microsoft
Copyright
EXAM1.ASM(10): error A2009: Symbol not defined: HTOA1
EXAM1.ASM(12): error A2105: Expected: instruction or directive
50542 + 449842 Bytes symbol space free
0 Warning Errors
2 Severe Errors
C:>\
上述信息提示在EXAM1.ASM文件的第10、12行分别有2个语法错误。这时应返回到第一步,编辑源程序状态,找出有错误的程序行,修改有错误的语句。上述程序中第10行并没有错误,只因第12行HOTA1标号后面遗漏了“:”号,导致第10行的错误,将第12行语句的标号HTOA1后加一个“:”号即可。
然后保存EXAM1.ASM文件,重新进行汇编,直至没有错误信息提示为止,方可进行下一步操作。
再次进行汇编,屏幕显示如下信息:
Microsoft
Copyright
EXAM1.ASM(10): error A2009: Symbol not defined: HTOA1
EXAM1.ASM(12): error A2105: Expected: instruction or directive
50542 + 449842 Bytes symbol space free
0 Warning Errors
0 Severe Errors
C:>\
没有产生错误信息,表明汇编通过,可以进行下一步操作。
【步骤三】 用LINK对目标文件进行连接,生成文件名为EXAM1.EXE的可执行文件。
操作如下:
C:>\LINK EXAM1;↙
屏幕显示如下信息:
Microsoft (R) Segmented-Executable Linker Version 5.13
Copyright (C) Microsoft Corp 1984-1991. All rights reserved.
LINK: fatal error L1093: EXAM1.OBJ: object not found
C:>\
一般情况下,连接过程不会出现错误,但是,如果程序中没有设置堆栈段,或设置了堆栈段,但未定组合类型语句STACK,连接程序LINK也会提示警告信息,但不影响程序的执行,可以忽略。
本程序出现的错误是没有找到EXAM1.OBJ文件,就是说在汇编过程中有错误产生,导致汇编程序没有通过,没有生成EXAM1.OBJ文件。在这种情况下必须回到编辑状态改正程序中的错误语句,然后重新进行汇编,直到没有错误信息提示,并且生成了EXAM1.OBJ文件,方可再次进行连接操作。
再次进行连接,屏幕显示如下信息:
Microsoft (R) Segmented-Executable Linker Version 5.13
Copyright (C) Microsoft Corp 1984-1991. All rights reserved.
C:>\