欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

微机实验

程序员文章站 2022-03-10 11:45:43
...

1)练习并掌握汇编语言开发全过程,在屏幕打印HELLO字符串。

程序段为:
            .486
  DATA     SEGMENT USE16                   ;定义数据段
  MESG    DB      '1511','$'               ;引号内为学号
  DATA    ENDS
  CODE    SEGMENT USE16                   ;定义代码段
      ASSUME  CS:CODE,DS:DATA
  BEG:	   MOV     AX,DATA
           MOV     DS,AX
LAST:      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 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   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 MESG
       INT 21H
       MOV AH,4CH
       INT 21H

CHANG  PROC
LAST:  CMP  [BX],10             ;LAST:  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 CL,SUM
       ADD [BX+8],SUM     ;ADD [BX+8],CL
                            ; MOV DL,30H
       ADD [BX+7],30H       ;ADD [BX+7],DL
      ADD [BX+8],30H       ;ADD [BX+8],DL
       RET
CHANG  ENDP

CODE ENDS
     END BEG
运行代码:
;FILENAME: EXA131.ASM
    .486
DATA SEGMENT USE16
     SUM  DB ?,?
     MESG DB '25+9='
          DB 0,0,'$'
     N1   DB 9,0F0H
     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 MESG
       INT 21H
       MOV AH,4CH
       INT 21H

CHANG  PROC
LAST:  CMP BYTE PTR [BX],10
       JC  NEXT
       SUB BYTE PTR [BX],10
       INC BYTE PTR [BX+7]
       JMP LAST
NEXT:  MOV CL,SUM
       ADD [BX+8],CL
       MOV DL,30H
       ADD [BX+7],DL
       ADD [BX+8],DL
       RET
CHANG  ENDP

CODE ENDS
     END BEG