推荐工具Win-Masm assume cs:code,ds:data
;数据段
;----------------------------------------------
data segment

data ends

;代码段
;----------------------------------------------
code segment
start:
;安装do0子程序到0:200h
;----------------------------------------------
mov ax,cs ;段寄存器之间不准直接传递数据
mov ds,ax
mov si,offset do0
mov ax,0
mov es,ax
mov di,200h
;movsb将ds:si指向的内存单元中的字节送入es:di中
;if(DF==0){ si++;di++} else{si--,di--}
mov cx,offset do0end-offset do0 ;设置复制代码的长度
cld ;DF=0
rep movsb ;等价于while(cx--!=0) movsb;
;设置中断程序0指向0:200h处
;--------------------------------
mov ax,0
mov es,ax
;中断向量占两个字,高字地址存放段地址,低字地址存放偏移地址
mov word ptr es:[0*4],200h
mov word ptr es:[0*4+2],0
;调用0号中断
;---------------------------------
int 0
;程序返回dos
mov ax,4c00h
int 21h

;do0子程序:显示字符串"hello world!"
;----------------------------------
do0:
jmp short do0start
db "hello world!"

do0start:
mov ax,0b800h ;0b800h地址为显存地址
mov es,ax
mov di,12*160+36*2
mov ax,cs
mov ds,ax
mov si,202h

mov cx,12
s:mov al,[si]
mov es:[di],al
inc si
add di,2
loop s
mov ax,4c00h
int 21h
do0end:nop

code ends
end start
|
|
| 日 | 一 | 二 | 三 | 四 | 五 | 六 |
---|
25 | 26 | 27 | 28 | 29 | 30 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 1 | 2 | 3 | 4 | 5 |
|
公告
常用链接
留言簿(4)
随笔分类
相册
Blog
论坛
积分与排名
最新评论

|
|