第一个汇编程序hello world

        近来,看了看以下汇编视频,终于学了第一个汇编程序—hello world,下面分享以下程序的各部分代码和注释,希望大家有所帮助。

程序源码如下:

assume cs:code,ds:data ;定义代码段和数据段框架


data segment  ;数据段
msg db "hello world";定义字符串
data ends


code segment  ;代码段
start: 
    mov ax,data
    mov ds,ax   ;数据段初始化


    mov bx,0b800h ;将b800h地址空间拷贝到es段寄存器中
    mov es,bx         ;b800h/数据不能直接拷贝到es中,用通用寄存器bs转移给es
    mov cx,11         ;将11赋给cs通用寄存器--字符串循环11次
    mov ah,01000010b  ;字符属性红底绿字


    mov si,0
    mov bx,0 ;初始化
      s:mov al,ds:[si]     ;s:loop循环标号
    mov es:[bx],al         ;es,ds 获取第一个字符地址,字符地址=段地址+偏移地址
    mov es:[bx+1],ah    ;字符后面紧接字符属性
    inc si                       ;使ax 每次加1
    add bx,2                  ;每次bx加2
    loop s                      ;循环结束
    
    mov ax,4c00h          ;防止一闪而过
    int 21h 
    
code ends
end start



以下是运行结果:



感悟:汇编写程序似乎有点难度,首先得知道很多寄存器,然后要知道如何使用寄存器,然后才能开工啊!就拿hello world为例,要把字符挨个拷贝到显存地址空间才能显示字符,因此要使用循环语句;在赋值是不能像平常语言一样直接赋值,很多时候需要把值和数据传给通用寄存器,然后再通过通用寄存器传给其它特定寄存器。


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

昕光xg

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

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

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

打赏作者

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

抵扣说明:

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

余额充值