美文网首页
微机 第一次实验

微机 第一次实验

作者: Summer2077 | 来源:发表于2020-11-05 08:50 被阅读0次

1.1输出5个helloword

;FLENAME:EXA121.ASM
.486
DATA       SEGMENT      USE16
MESG       DB           'HELLO'
           DB           0,0,0    ;
DATA       ENDS
CODE       SEGMENT      USE16
           ASSUME       CS:CODE,DS:DATA
BEG:       MOV          AX,DATA
           MOV          DS,AX
           MOV          ES,AX     ;
           MOV          CX,5
LL1:       MOV          MESG+5,0DH;
           MOV          MESG+6,0AH;
           MOV          MESG+7,'$';
           CALL         DISP
           MOV          MESG+5,0;
           MOV          MESG+6,0;
           MOV          MESG+7,0;
           LOOP         LL1
           MOV          AH,4CH
           INT          21H
DISP       PROC
           MOV          AH,9
           MOV          DX,OFFSET MESG
           INT          21H
           RET
           DISP         ENDP
           CODE         ENDS
                        END   BEG
image

1.2排除语法错误。

下面给出的是一个意想通过比较法完成8位二进制数转换成十进制数送屏幕显示功能的汇编语言源程序,但有很多语法错误。 要求实验者按照原样对源程序进行编辑,汇编后,根据TASM给出的错误信息对源程序进行修改,直到没有语法错误为止。然后进行链接,并执行相应的可执行文件。正确的执行结果是在屏幕上显示:25+9=34。
程序清单


;FILENAME:EXA131.ASM

.486

    DATA SEGMENT USE16

SUM DB ?,?,

MESG DB ‘25+9=’

  DB 0,0

  N1 DB 9,F0H

  N2 DW 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,OFFSEG MEST

  INT 21H

  MOV AH,4CH

  INT 21H

CHANG: PROC

LAST: CMP [BX],10

  JC NEXT

  SUB [BX],10

  INC [BX+7]

  JMP LAST

NEXT: ADD [BX+8],SUM

  ADD [BX+7],30H

  ADD [BX+8],30H

  RET

CHANG: ENDP

CODE ENDS

  END BEG

修改后的程序

;FILENAME   EXA131.ASM
.486
DATA SEGMENT  USE16;SEGMENT关键词有缩写

;用于保存结果的二进制数
SUM     DB  ?,?;多了一个逗号
;用于保存结果的二进制数

;显示的字符串
MESG    DB  '25+9='
        DB  0,0,'$';添加结束符
;显示的字符串

N1      DB  9,0F0H;十六进制开头需要以0开始,但是第二个没有用到,这里保留
N2      DB  25;根据N1和16行可知该数据类型为DB
DATA    ENDS

CODE    SEGMENT USE16
ASSUME  CS:CODE,DS:DATA

BEG:
        MOV AX,DATA
        MOV DS,AX
        MOV BX,OFFSET   SUM
        ;计算N1+N2,并将结果保存到SUM处
        MOV AH,N1
        MOV AL,N2
        ADD AH,AL
        MOV [BX],AH
        ;计算N1+N2,并将结果保存到SUM处

        ;CHANG功能为转发字符串
        CALL CHANG
        ;CHANG功能为转发字符串

        ;调用DOS显示功能
        MOV AH,9
        MOV DX,OFFSET   MESG;是MESG不是MEST
        INT 21H
        ;调用DOS显示功能

        ;调用DOS退出功能
        MOV AH,4CH
        INT 21H
        ;调用DOS退出功能

CHANG:
LAST:

        ;算法:由于只有两位数,每次减10,并且显示位(十位)加1直到SUM小于10
        CMP  byte ptr [BX],10;指定内存单元大小
        JC  NEXT
        SUB  byte ptr [BX],10;指定内存单元大小
        INC byte ptr [BX+7];指定内存单元大小
        JMP LAST
        ;算法:由于只有两位数,每次减10,并且显示位(十位)加1直到SUM小于10

NEXT:
        ;将个位数移到显示位(个位)上

        ;ADD指令不能两个操作数均为内存地址,且AH没有被使用,使用AH来中转
        MOV  AH,[BX]
        MOV  [BX+8],AH
        ;ADD指令不能两个操作数均为内存地址,且AH没有被使用,使用AH来中转

        ;将个位数移到显示位(个位)上

        ;0x30为字符'0'的ASCII码表

        ADD  byte ptr [BX+7],30H
        ADD byte ptr [BX+8],30H

        ;0x30为字符'0'的ASCII码表
        RET
CODE    ENDS
END     BEG
image.png

相关文章

  • 微机 第一次实验

    1.1输出5个helloword 1.2排除语法错误。 下面给出的是一个意想通过比较法完成8位二进制数转换成十进制...

  • 微机原理第一篇

    微机原理采用的是TD集成实验a系统,试验箱也是唐都公司提供的,具体指令和书本上略有差别,书本上为8086微机,试验...

  • 2019.11.17-微机原理实验

    都说一周的悲惨生活从微机原理实验开始,今天我觉得我似乎更闹心一点。 实验装置配套的电线像变戏法儿一样不见了,嗨,又...

  • 100天咯。

    语文预计考b 数学考a 英语a 物理a 化学a 历史b 政治a 体育a 微机a 实验技能考试a 全县第90 能考上...

  • 今天的微机课

    今天下午最后一节课,我们班上了一节微机课,这是第一次上微机课,我又激动又兴奋。 来到了微机室,映入眼帘的是一排...

  • 初中那些事 018 : 政治斗争(2)

    政治斗争第一周。 我第一次接触这这件事,还是那一节微机课前的大课间。微机课是在专门的教室上的,而我们的微机室是在操...

  • 2017-10-10

    上微机课 今天是第一次上微机室真是好啊!下面我们来个开始学电计算机了。 一天真是快了呀里上第一节课, 微机室里可真...

  • 微机课

    今天我们上微机课,微机老师让我们到了微机室。我们赶紧做好位置,打开电脑,我们这趟微机课就是让我们学习怎么用...

  • 随想

    今天晚上开会的时候脑子里突然闪回到初中的时候我第一次上电脑微机课的情形,那应该是2004年,微机课老师很有激情的给...

  • 微机

    今儿个有节上机课,所是去玩电脑,其实是帮老师答题做表格,不过也挺好的,做表格用不了多少时间,可以好好的玩一玩,打游...

网友评论

      本文标题:微机 第一次实验

      本文链接:https://www.haomeiwen.com/subject/buhovktx.html