Assembly language 实验10-1
实验10-1assume cs:codedata segment
db 'Welcome to masm!', 0
data ends
code segment
start:
mov dh, 8 ; 从第8行开始显示
mov dl, 3 ; 从第3列开始显示
mov cl, 2 ; 字体颜色为绿色
mov ax, data
mov ds, ax
mov si, 0 ; 字符串的首地址
call show_str
mov ax, 4c00H
int 21H
show_str:
push ax
push bx
push bp
push cx
push si
push di
push es
mov bl, cl ; 字体颜色存在bl中
mov ax, 0b800H
mov es, ax ; 显示缓冲区的段地址存在es
mov ax, 0a0H
mul dh ; 计算第n行的首地址
mov bp, ax ; 将第n行的首地址存在bx
mov ax, 2
mul dl ; 计算第n列的偏移地址
mov di, ax ; 将第n列存在di
ctom:
mov ch, 0 ; 判断是否到字符串结尾
mov cl,
jcxz exit ; 结尾则结束
mov es:, cl ; 存储字符
inc di
mov es:, bl ; 存储字符属性
inc si
inc di
jmp short ctom
exit:
pop es
pop di
pop si
pop cx
pop bp
pop bx
pop ax
ret
code ends
end start
**** Hidden Message *****
强力支持楼主! 正在学习此处。。。 表示暂时没学到这儿…… 谢谢分享
谢谢分享
谢谢分享 我就是搞不懂为什么push那么多 又pop 那么多!!子程序我修改的cx的值所以我push了cx要改颜色的时候就pop出来 其他的都没用啊 难道是因为子程序结束后, 有义务还原被子程序修改的寄出去???求解!thank 油 顺便问下 那么mm是谁好养眼啊! 强力支持楼主! 压栈那么多数据干啥呢 还没学到哪里去。不过我有个疑问。start: 这一句和end 后面的start必须要加吗? songmao420 发表于 2014-4-12 21:41 static/image/common/back.gif
还没学到哪里去。不过我有个疑问。start: 这一句和end 后面的start必须要加吗?
该句告诉编译器,程序从start标号位置开始
end start表示整个start开始的程序结束
你要知道门在哪里,要走都长的路才能出发不是。。 。。。。。。。。。。。。。 ck329054222 发表于 2014-4-15 16:01
该句告诉编译器,程序从start标号位置开始
end start表示整个start开始的程序结束
恩,谢谢解惑。 能不发图片了吗?.... 谢谢分享!!!!!!!!!! aaaaaaaaaaaaaaaaaaaaaaaaaa 谢谢分享
谢谢分享
谢谢分享
看帖不回者 么有小JJ.........
激动人心,无法言表 学习!!!
页:
[1]
2