推荐工具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
论坛
积分与排名
最新评论
|
|