一、实验目的和要求

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

运行结果:

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐