description
编写一个简单的程序:将“This is my first ASM program-姓名(汉语拼音各人的姓名)”放在DS=1000H,BX=0000H开始的存储器单元中,然后将该内容搬移到BX=0100H开始的单元中,最后将该字符串通过DOS功能调用显示在屏幕上。
EXE版本
; 声明数据段
data segment
msg db "this is first asm program-ya*******ao$"
db 1000 DUP(0) ; 未初始化数据
ends
; 声明栈段
stack segment
dw 128 dup(0)
ends
; 声明代码段
code segment
start:
mov ax, data ; 将数据段的首地址mov到ds寄存器,需要注意的是不能直接mov ds, data,必须需要通过ax寄存器间接赋值,这个是汇编的知识。
mov ds, ax
mov ax, 1000h
mov es, ax ; 同时将数据段首地址mov到es(extended segment)
mov si, 0
mov di, 0
mov cx, 40 ; 40为字符串msg的长度
copy1: ; 数据从ds复制到1000:0000
mov ax, [si]
mov es:[di], ax ; si和di在没有显式标明段时默认是ds段,这里es:[di]是1000:0000
add si, 2
add di, 2
loop copy1
mov si, 0