- [tolearn] 谢谢你哈…… 10/19 07:10
- [huang425618] 呵呵,第二种方法原来就是第七章的内容,我当时还没学到那呢。我其实不是为我自己辩解,只是我想说,我们的 10/03 20:00
- [qq93324030] 不觉得第二种方法好,他怎么就能那么确定abc三个段是连续的呢?万一不连续他的程序就没作用了。。 10/02 04:37
- [qq93324030] 谢谢,和你对比了我就不用贴了 10/02 00:18
[2010-11-01 13:06] 检测10.3
assume cs:code
data segment
db 10 dup (0)
data ends
code segment
start:mov ax,12666
mov bx,data
mov ds,ax
mov si,0
call dtoc
mov dh,8
mov dl,3
mov cl,2
call show_str
mov ax,4c00h
int 21h
dtoc:inc si 为什么要让si加1呢?这是为了第二个子程序
s1:mov bl,10 的jcxz的使用
mov bh,0
mov dx,0
div bx 除法 计算12666除10
mov [si],dl 余数进[si]
mov bh,30h
add [si],bh 加上30h,变成Ascii码
mov cl,al
mov ch,0
inc si 使用的jcxz指令
jcxz cd
jmp short s1
cd:ret
show_str: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 颜色
s:mov al,[si] [si]是ASCII码
mov es:[di],ax 颜色和ASCII码进入显示区
dec si si减量
add di,2 显示区增量
mov cl,[si] 第一个子程序里si加了1 mov ch,0
jcxz ok
jmp short s
ok:ret
code ends
end start
第一个子程序里si是到5,后面是0,[si]第一个也是0,这样就可以方便的使用jcxz指令的使用了.
data segment
db 10 dup (0)
data ends
code segment
start:mov ax,12666
mov bx,data
mov ds,ax
mov si,0
call dtoc
mov dh,8
mov dl,3
mov cl,2
call show_str
mov ax,4c00h
int 21h
dtoc:inc si 为什么要让si加1呢?这是为了第二个子程序
s1:mov bl,10 的jcxz的使用
mov bh,0
mov dx,0
div bx 除法 计算12666除10
mov [si],dl 余数进[si]
mov bh,30h
add [si],bh 加上30h,变成Ascii码
mov cl,al
mov ch,0
inc si 使用的jcxz指令
jcxz cd
jmp short s1
cd:ret
show_str: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 颜色
s:mov al,[si] [si]是ASCII码
mov es:[di],ax 颜色和ASCII码进入显示区
dec si si减量
add di,2 显示区增量
mov cl,[si] 第一个子程序里si加了1 mov ch,0
jcxz ok
jmp short s
ok:ret
code ends
end start
第一个子程序里si是到5,后面是0,[si]第一个也是0,这样就可以方便的使用jcxz指令的使用了.
评论次数(0) |
浏览次数(467) |
类型(汇编作业) |
收藏此文 |