第一个汇编程序

第一个汇编程序

①源程序 Hello.asm

assume cs:Hello ;假设ip为Hello,cs:ip指向的是程序执行的内存地址
Hello segment   ;定义一个段Hello
    mov ax,2    ;3个字节
    mov bx,3    ;在段中写汇编语句,3个字节
    mov ax,4c00H;3个字节
    int 21H     ;程序返回 2个字节
Hello ends      ;段的结束地
end             ;程序的结束地

② 程序运行原理

要执行A程序必须要有一个正在执行的B程序,B程序将A程序加载进内存,将CPU的控制权交给A程序,B程序暂停执行,当A程序执行完后,再将CPU控制权交给B

  • 那么如何将CPU执行权返回给B程序呢?该返回过程叫做程序返回

    mov ax,4c00H 
    int 21H
    

这两条指令做的就是程序返回,具体指令含义不解释

③编译,连接,运行,跟踪程序

  • 首先把masm和linker软件添加到环境变量,两个程序可自行网上下载
  • 编译:


OBJ:目标文件(要的结果)
LST:列表文件名,中间结果
CRF:交叉引用文件

完成之后可看到有一个HELLO.OBJ文件

  • 连接

执行link命令,输入HELLO.OBJ一路ENTER,最后生成HELLO.EXE文件

  • 运行 Debug跟踪 HELLO.EXE

可以看到,用U命令查看即将执行程序的汇编指令,就是我们刚刚写的Hello.asm
,CX代表的是U命令查看到的本程序的指令大小,B(11)个字节,

  • 程序的所在内存地址:
    DS+10:0 1447 也是 CS的值,CPU通过SS段寄存器以及SP寄存器(偏移地址)来指向栈顶元素的地址,SS也就是栈顶的地址


最后BX变成了3,AX变成了4c00,要用p命令执行int 21H,不为什么

两个软件的下载地址链接:http://pan.baidu.com/s/1gfdWds3 密码:e103

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值