【汇编】显示:25+9=34

1.题目要求

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

2.流程图

3.程序

;FILENAME:    EXA131.ASM
.486
DATA SEGMENT    USE16       ; DATA SEGMENT为段定义语句,段名为DATA,USE16单元有效地址为16位,16位寻址方式
SUM     DB      2 DUP(?)    ;变量名为SUM,定义2个字节变量
MESG    DB      '25+9='     ;变量名为MESG,定义字节变量
        DB      0,0,'$'
N1      DB      9           ;,F0H
N2      DB      25 
DATA    ENDS
 
CODE    SEGMENT    USE16
        ASSUME CS:CODE,DS:DATA      ;段约定语句,
BEG:    MOV     AX,DATA             ;设置DS初值
        MOV     DS,AX
        MOV     BX,OFFSET SUM       ;bx基址寄存器暂存SUM的相对于数据段DS的偏移地址
        MOV     AH,N1
        MOV     AL,N2
        ADD     AH,AL
        MOV     [BX],AH             ;25+9的和存入SUM
        CALL    CHANG
        MOV     AH,9                ;DOS功能调用09H号显示字符串
        MOV     DX,OFFSET MESG      ;入口参数DX=字符串首地址,字符串必须以‘$’为结束标志
        INT     21H   
        MOV     AH,4CH              ;返回DOS使用DOS系统的4CH功能调用
        INT     21H 
CHANG   PROC
LAST:   CMP     BYTE PTR [BX],10    ;[BX]基址寻址指向SUM,和10立即数的类型属性不确定,需要PTR。即SUM和10比较,若SUM<10,则跳转到NEXT
        JC      NEXT
        SUB     BYTE PTR [BX],10    ;SUM>10则SUM=SUM-10
        INC     BYTE PTR [BX+7]     ;BX+7即输出的十位数加1
        JMP     LAST                ;JMP即JUMP无条转移
NEXT:   MOV     AH,SUM              ;不能直接在SUM和[BX+8]之间传值,需要中间一个AH寄存器
        ADD     [BX+8],AH           ; 定位到MESG DB 0,0的位置填入值,+8是后一个0
        ADD     BYTE PTR [BX+7]     ; 30H是0的ASCII
        ADD     BYTE PTR [BX+8],30H 
        RET
CHANG   ENDP
 
CODE    ENDS
        END     BEG


 

 

 

  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
微机原理与汇编语言-实验报告(中北大学大数据学院)(前4个实验都可以直接运行,后面的几个需要用到proteus,这个要自己根据自己的情况搞,咱就不能保证在你电脑上能不能运行了) 实验一 简单程序设计 1. 编制一个简单的运算程序,并且调试完成。 2. 编制一个计算x=a2+b2 3. 验证上述结果的正确 实验二 循环、分支程序设计 1. 编制一个统计数组中正负数个数及均值的程序,并且调试完成得到正确的结果。 2. 设计计算Y=1+2+3+....,直到累加和刚好大于10000的程序并且调试完成。 3. 对给定数组中的所有元素,按从大到小的顺序排序,并且加以验证。 实验三 系统功能调用实验 1.编制一个具有屏幕提示和键盘输入的程序,键盘输入一个人名,在屏幕上显示“Hello 人名!”; 2.通过键盘输入一串包含大小写字母和数字的字符串,统计其中大写、小写字母和数字字符的个数,并将结果显示在屏幕上。 实验四 8255并行接口实验 1.将8255一个端口接8个发光二极管,用不同工作方式控制其逐次点亮发光二极管。 2.将8255另一个端口接开关,用不同工作方式,编程将开关信息在发光二极管上显示出来。 3.验证上述操作的正确性,对实验结果进行解释 实验五 键盘、LED实验 1.在实验箱上,连接小键盘和LED显示器。 2.编程将键盘输入的数字,显示显示器上,在按键时,原来显示的数字左移一位,新按的键值显示在最右端。 3.考虑两个键组合时的输入方法 4.对实验结果进行说明 实验六 中断实验 1.连接实验箱上的数码管,通过消抖开关作为中断源。 2.编写程序,完成在中断服务程序中记录中断次数,在主程序中显示按键次数。 3.将消抖开关换成一般开关,用同样的程序,再测试,仔细观察,发现了什么,为什么? 实验七 定时/计数器实验 1.使用计数器对消抖开关的按动次数进行计数,显示当前的计数值。 2.对实验箱中系统时钟进行计数,改变计数初值(两个初值要相差很大),观察有什么不同。 3.8253的初值用0和1,观察结果,并加以分析。 4.分析实验结果,并对实验结果进行说明。 实验八 综合实验 1.将实验箱设计成一个电子表,该表能分时(或按键切换)显示年月日、时分秒; 2.设置按键,通过按键可以修正日期和时间,在修正日期、时间时,电子表仍然可以继续工作。 3.AD实验,用显示显示当前AD的输入电压值,要求精确到小数点后2位数(选做)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值