汇编-第一个程序

汇编程序的编写

一个完整的汇编程序一点一点的来介绍会感觉比较麻烦,我们直接从一个完整的Hello world程序来看

assume cs:code,ds:data

data segment ;数据段
    string db 'Hello,World!$'
data ends

code segment ;代码段
start:
    mov ax,data ;获取段基址
    mov ds,ax ;将段基址送入寄存器
    mov dx,offset string
    mov ah,9
    int 21h
    mov ah,4ch
    int 21h
code ends
end start

这里我们主要理解该程序的结构,明白如何书写,如何从文件到运行。

  1. 程序开头我们使用了assume,将我们的寄存器和代码关联起来,一个程序要分为数据段,代码段时我们就可以使用assume,assume
    cs:code,ds:data表示将code代码段与cs寄存器关联起来,data段与ds寄存器关联起来,(本质是将段的起始地址放入对应寄存器中)
  2. 中间可以出现多个segment,表示一个段的标识,这里只有数据段和代码段两个,希望将数据和代码区分时,可以将数据单独拿出来做一个数据段。每一个ends表示一个段的结束,(与end区别)
  3. data,code是标号,表示一个地址,可以理解为一个段的名字。
  4. Start:表示代码段的起始,本质是将当前地址赋给cs,因为cs:ip指向需要执行的语句。不申明的话指向程序起始地址(hello
    world),但是该语句是数据,不能执行,因此需要使用start申明。代码段结束使用end start

在这里插入图片描述

如何从代码到执行

汇编的源码放在一个.asm文件中,第一步编译为obj文件,然后在将obj文件连接起来得到exe文件,最后由操作系统运行exe

文本文件(.asm)----> .obj文件 —> .exe —> 结果

在这里插入图片描述
在DOSBox中:

masm 1.asm 
link 1.obj
1.exe

在这里插入图片描述

  • 13
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

&阿权&

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值