本文主要是介绍第一个汇编程序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为例,要把字符挨个拷贝到显存地址空间才能显示字符,因此要使用循环语句;在赋值是不能像平常语言一样直接赋值,很多时候需要把值和数据传给通用寄存器,然后再通过通用寄存器传给其它特定寄存器。
这篇关于第一个汇编程序hello world的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!