一、实验目的和要求
1. 掌握汇编语言源程序的格式;
2. 进一步学习汇编语言源程序的编辑、汇编、目标文件的链接和可执行文件的执行全过程;
3. 掌握编辑软件、TASM/MASM、TLINK和TD的使用方法、掌握汇编语言的语法规则。
4. 实验内容:
(1)练习并掌握汇编语言开发全过程,在屏幕打印各自学号,要求在命令行下进行汇编程序编译,汇编源程序的文件名命名为各自学号。
(2)排除语法错误:给出的是一个通过比较法完成8位二进制数转换成十进制数送屏幕显示功能的汇编语言源程序,但有很多语法错误。要求实验者按照原样对源程序进行编辑,汇编后,根据TASM给出的信息对源程序进行修改,知道没有语法错误为止。然后进行链接,并执行相应可执行文件。正确的执行结果在屏幕上显示:25+9=34。
二、实验过程描述与结果分析
(1)汇编语言开发步骤
汇编语言源程序编写好以后, 必须经过下列几个步骤才能在机器上运行:
1.将源程序通过调编辑程序编辑成.ASM文件;
2.将.ASM文件通过调汇编程序汇编成.OBJ文件;
3.将.OBJ文件库文件通过调链接程序如TLINK.EXE链接成可执行文件.EXE文件;
4.运行.EXE文件即可得到结果。
程序段为:
.586
DATA SEGMENT USE16 ;定义数据段
MESG DB 'B11111111xyz', '$'
DATA ENDS
CODE SEGMENT USE16 ;定义代码段
ASSUME CS: CODE, DS: DATA ;说明段约定
BEG: MOV AX, DATA ;BEG为启动地址
MOV DS, AX
MOV AH, 9
MOV DX, OFFSET MESG
INT 21H
MOV AH, 4CH
INT 21H ;返回DOS
CODE ENDS
END BEG ;汇编结束
(2)排除语法错误
要求通过比较法完成8位二进制数转换成十进制数送屏幕显示功能的汇编语言源程序。但有很多语法错误,要求按照原样对源程序进行编辑,汇编后,根据TASM给出的错误信息对源程序进行修改,直到没有语法错误为止,然后进行链接,并执行相应的可执行文件。正确的执行结果是在屏幕上显示:25+9=34。
修改后代码:(分号后为修改)
;FILENAME EXA131.ASM
.486
DATA SEGME NT USE16 ; DATA SEGMENT USE16
SUM DB ?, ? ;SUM DB '?', '?'
MESG DB '25+9='
DB 0, 0 ; DB 0, 0, '$'
N1 DB 9, F0H ; N1 DB 9, 0F0H
N2 DW 25 ; N2 DB 25
DATA ENDS
CODE SEGMENT USE16
ASSUME CS: CODE, DS: DATA
BEG: MOV AX, DATA
MOV DS, AX
MOV BX, OFFSET SUM
MOV AH, N1
MOV AL, N2
ADD AH, AL
MOV [BX], AH
CALL CHANG
MOV AH, 9
MOV DX, OFFSET MEST ; MOV DX, OFFSET MESG
INT 21H
MOV AH, 4CH
INT 21H
CHANG: PROC ; CHANG PROC
LAST: CMP [BX], 10 ; CMP BYTE PTR[BX], 10
JC NEXT
SUB [BX], 10 ; SUB BYTE PTR [BX], 10
INC [BX+7] ; INC BYTE PTR [BX+7]
JMP LAST
NEXT: ;MOV DL, SUM
ADD [BX+8], SUM ; ADD BYTE PTR [BX+8], DL
ADD [BX+7], 30H ;ADD BYTE PTR [BX+7], 30H
ADD [BX+8], 30H ; ADD BYTE PTR [BX+8], 30H
RET
CHANG: ENDP ; CHANG ENDP
CODE ENDS
END BEG
运行结果: