汇编语言---子程序设计举例(两组数据相加)

汇编语言---子程序设计举例(两组数据相加)

配置环境

  1. 首先双击下载程序进行下载。(没有安装程序的,可以下载我为大家准备的安装文件。)
    不会安装的可以看一下文件

  2. 将debug.exe放入C盘(没有debug的自行下载

  3. 打开DOXBos
    在这里插入图片描述

  4. 将masm文件放入D盘(没有masm的自行下载

  5. 更改masm文件为123(任意),在文件夹中创建文件123.asm(任意)。

  6. 在DOXBos程序中 输入mount C D:\123

  7. 输入C:

  8. 打开123.asm编写程序

  9. 第6、7步可以省略,省略办法见这篇文章,设置之后就不必每次都输入

要求

已知在NUM1和NUM2为首地址的两个存储区中已分别定义了N个字数据。试编程实现实现将这两组N个字数据相加,并将和存入以NUM3为首地址的存储区中。

编辑程序

DATA    SEGMENT
NUM1    DW      1011H,2022H,3033H,4044H,5055H   ;
NUM2    DW      6066H,7077H,8088H,9909H,0000H   ;
N       EQU     ($-NUM2)/2                      ;
NUM3    DW      N  DUP(?)                         ;
DATA    ENDS
STACK   SEGMENT STACK
        DB      100     DUP(?)
STACK   ENDS
CODE    SEGMENT
        ASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA
START:
        MOV AX,DATA
        MOV DS,AX
        MOV ES,AX
        LEA SI,NUM1
        LEA BX,NUM2
        LEA DI,NUM3
        MOV CX,N 
        CALL SADD                               ;
        MOV AH,4CH
        INT 21H
SADD      PROC
        PUSH AX
        PUSH BX
        PUSH CX
        PUSH SI
        PUSH DI
        PUSHF
        JCXZ EXIT
        CLC
        CLD
NEXT:
        LODSW
        ADC AX,[BX]
        STOSW
        ADD BX,2
        LOOP NEXT
EXIT:
        POPF
        POP DI
        POP SI
        POP CX
        POP BX
        POP AX
        RET 
SADD    ENDP
CODE    ENDS
        END START

运行程序

  1. masm 123.asm
    在这里插入图片描述如果出现错误根据提示进行更改

  2. link.123

  3. 运行123.exe

  4. 运行成功

  5. 反汇编(为了输入方便,将123.exe改为1.exe,这点大家不用更改,维持你文件名即可)

debug 1.exe

然后用U命令

-u

得到反汇编结果

  1. 运行结果,查看寄存器(T命令或者G命令)
    如果用T命令一步一步执行
    可以输入
debug 1.exe
-r
-t
...
(直到得出结果)

如果用G命令全部运行

debug 1.exe
-G 076A:0018  ;(这里是你想要运行到的程序地址)

后续

如果想了解更多物联网、智能家居项目知识,可以关注我的项目实战专栏。
欢迎关注公众号。
在这里插入图片描述

编写不易,感谢支持。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

物联网知识

编写不易,打赏支持一下我吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值