- [tolearn] 谢谢你哈…… 10/19 07:10
- [huang425618] 呵呵,第二种方法原来就是第七章的内容,我当时还没学到那呢。我其实不是为我自己辩解,只是我想说,我们的 10/03 20:00
- [qq93324030] 不觉得第二种方法好,他怎么就能那么确定abc三个段是连续的呢?万一不连续他的程序就没作用了。。 10/02 04:37
- [qq93324030] 谢谢,和你对比了我就不用贴了 10/02 00:18
[2010-10-22 22:43] 检测点10.1
assume cs:code
data segment
db 'welcome to masm!',0
data ends
code segment
start:mov dh,13 行号
mov dl,10 列号
mov cl,1 颜色
mov ax,data
mov ds,ax
mov si,0 data数据设置
call k push (mov ax,4c00)
mov ax,4c00h
int 21h
k:mov ax,0b800h
mov es,ax
mov di,0a0h 屏幕显示的 地址
mov ax,di
mul dh
mov di,ax 这是用乘法算出要显示的行数
mov ax,0
mov al,2
mul dl
sub ax,2 用乘法减法算出显示的列数
add di,ax 相加得出要屏幕显示行列的偏移地址
mov ah,cl 把颜色送入寄存器高位
push cx 保存cx
s:mov cl,[si]
mov ch,0
jcxz ok 利用jcxz来得出显示多少字
mov al,[si] 把要显示的字送入寄存器低位
mov es:[di],ax 把字和属性送入要显示的屏幕
inc si data数据地址加一
add di,2 显示偏移地址加2
jmp near ptr s
ok:pop cx 还原cx
ret pop (mov ax,4c00h)
code ends
end start
data segment
db 'welcome to masm!',0
data ends
code segment
start:mov dh,13 行号
mov dl,10 列号
mov cl,1 颜色
mov ax,data
mov ds,ax
mov si,0 data数据设置
call k push (mov ax,4c00)
mov ax,4c00h
int 21h
k:mov ax,0b800h
mov es,ax
mov di,0a0h 屏幕显示的 地址
mov ax,di
mul dh
mov di,ax 这是用乘法算出要显示的行数
mov ax,0
mov al,2
mul dl
sub ax,2 用乘法减法算出显示的列数
add di,ax 相加得出要屏幕显示行列的偏移地址
mov ah,cl 把颜色送入寄存器高位
push cx 保存cx
s:mov cl,[si]
mov ch,0
jcxz ok 利用jcxz来得出显示多少字
mov al,[si] 把要显示的字送入寄存器低位
mov es:[di],ax 把字和属性送入要显示的屏幕
inc si data数据地址加一
add di,2 显示偏移地址加2
jmp near ptr s
ok:pop cx 还原cx
ret pop (mov ax,4c00h)
code ends
end start
评论次数(0) |
浏览次数(470) |
类型(汇编作业) |
收藏此文 |