==================================================
root@yeah /cygdrive/d/asm
$ cat lab101.asm
assume cs:code
data segment
db 'welcome to masm!',0
data ends
code segment
;子程序描述
;名称:show
;功能:在指定位置用指定颜色显示一个用0结束的字符串
;参数:dh=行号(0~24),dl=列号(0~79),cl=颜色
;ds:si指向字符串首地址
;返回:无
show:
mov bx,0b800h ;指定显示缓存区
mov es,bx ;地址
mov ax,0a0h ;将传入参数dh
mul dh ;计算为目标首
mov bp,ax ;地址,ES:BP
mov ah,cl ;颜色值
;开始循环处理字符串并显示到指定位置
a: mov bl,dl ;将传入参数dl
mov bh,0 ;作为目标地址
mov di,bx ;变量
mov cl,[si] ;检查[si]是否为
mov ch,0 ;0,如是,则跳出
jcxz ok ;循环
mov al,[si] ;装入字符串
mov es:1[bp+di],ax ;传送至目标地址
inc si ;增量操作
add dl,2 ;
loop a
ok: ret ;ip出栈返回调用
start: mov ax,data ;定义数据段地址
mov ds,ax ;字符串首地址
mov si,0 ;ds:si
mov dh,8 ;行
mov dl,3 ;列
mov cl,2 ;颜色
call show ;调用子程序
mov ah,4ch ;程序返回
int 21h
code ends
end start
==================================================
- [regex] O(∩_∩)O哈哈~ 02/05 18:44
- [qiangzi] 可爱 02/04 21:26
- [游客] revcp:逆序复制的意思 因为执行完d2c之后, 数字都是倒序排列的, 所以得rev一下 02/02 13:28
- [regex] 那个loo用的不对!应改为jmp short 比较好 01/30 15:24
- [regex] 三个实验踉踉跄跄磕磕绊绊的搞出来啦, 虽然不太精彩, 可是毕竟是自己的心血。 通过这个三个实验, 01/30 12:32
- [游客] 程序多用他们配合时间模块化编程,也就是子程序。 01/25 14:20
- [regex] 嘿嘿~~~, 初学者,不知道写啥 O(∩_∩)O哈哈~ 01/15 15:54
- [abob] 博客好干净啊 ^_^ 01/05 11:15