- [qiangzi] 楼主有空的话能帮我装一下dos吗?我一直装不上,qq519710391,先谢谢! 02/06 20:34
- [zwz_good] 看到自己的注释能给别人带来帮助,心里非常高兴,也许这就是帮助别人的快乐吧。 10/20 16:23
- [游客] 程序测试了一下,没什么问题。 10/20 14:25
- [游客] 博主程序中的那部分注释说明非常重要,非常有用,非常有帮助。好啊。 10/20 14:15
- [zwz_good] 谢谢你的鼓励。 10/10 20:56
- [游客] 自己实现更能体会过程,有好处,做完了再做便捷的就知道便捷在哪了。 顶博主! 10/10 14:25
- [zwz_good] 噢,习惯了使用这个子程序了,再来一个使用INT 21H中断的,谢谢提醒。 10/09 20:25
- [tinyparticle] ;名称:show_str 显示字符串子程序 ;功能:在指定的位置,用指定的颜色,显示一个用0 10/09 20:17
- [tinyparticle] 同意楼上 10/08 22:56
- [20081148] 你的7ch中断例程有问题,题目要求实现无条件段内近转移 jmp near ptr s指令,可你的代码 10/08 22:24
- [20081148] 你的虚拟机从哪下的啊?我下了好几个,都不能用,无语了。 10/21 08:53
[2009-10-09 20:11] 实验14 访问CMOS RAM
assume cs:code
data segment
db 32 dup (0)
db 9, 8, 7, 4, 2, 0
db '/', '/', ' ', ':', ':'
data ends
code segment
start:
mov ax, data
mov ds, ax
mov si, 0
mov di, 32
mov cx, 6
start1:
push cx
mov al, [di]
out 70h, al
in al, 71h
mov ah, al
mov cl, 4
shr ah, cl
and al, 0fh
add ah, 30h
add al, 30h
mov [si], ah ;第一位数字复制到内存中
mov [si+1], al ;第二位数字复制到内存中
mov ah, [di+6]
mov [si+2], ah ;第三位字符复制到内存中
inc di
add si, 3
pop cx
loop start1
mov dh, 8
mov dl, 3
mov cl, 2
mov si, 0
call show_str
mov ax, 4c00h
int 21h
;名称:show_str 显示字符串子程序
;功能:在指定的位置,用指定的颜色,显示一个用0结束的字符串
;参数:(dh)=行号(取值范围0-24),(dl)=列号(取值范围0-79)
; (cl)=颜色,ds:si指向字符串的首地址
;返回:无
show_str:
push ax
push bx
push cx
push dx
push si
push es
mov ax, 0b800h
mov es, ax
mov al, 0a0h
mul dh
mov bx, ax
mov al, 2h
mul dl
add bx, ax
mov dl, cl
mov cx, 0
s:
mov cl, [si]
jcxz ok
mov es:[bx], cl
mov es:[bx+1], dl
add bx, 2
inc si
jmp short s
ok:
pop es
pop si
pop dx
pop cx
pop bx
pop ax
ret
code ends
end start
=====================
assume cs:code
data segment
db 32 dup ('$')
db 9, 8, 7, 4, 2, 0
db '/', '/', ' ', ':', ':'
data ends
code segment
start:
mov ax, data
mov ds, ax
mov si, 0
mov di, 32
mov cx, 6
start1:
push cx
mov al, [di]
out 70h, al
in al, 71h
mov ah, al
mov cl, 4
shr ah, cl
and al, 0fh
add ah, 30h
add al, 30h
mov [si], ah
mov [si+1], al
mov ah, [di+6]
mov [si+2], ah
inc di
add si, 3
pop cx
loop start1
;调整光标位置
mov ah, 2 ;置光标
mov bh, 0 ;第0页
mov dh, 5 ;dh中放行号
mov dl, 30 ;dl中放列号
int 10h
;显示字符串
mov dx, 0
mov ah, 9
int 21h
mov ax, 4c00h
int 21h
code ends
end start
============确实挺方便的:)===============
data segment
db 32 dup (0)
db 9, 8, 7, 4, 2, 0
db '/', '/', ' ', ':', ':'
data ends
code segment
start:
mov ax, data
mov ds, ax
mov si, 0
mov di, 32
mov cx, 6
start1:
push cx
mov al, [di]
out 70h, al
in al, 71h
mov ah, al
mov cl, 4
shr ah, cl
and al, 0fh
add ah, 30h
add al, 30h
mov [si], ah ;第一位数字复制到内存中
mov [si+1], al ;第二位数字复制到内存中
mov ah, [di+6]
mov [si+2], ah ;第三位字符复制到内存中
inc di
add si, 3
pop cx
loop start1
mov dh, 8
mov dl, 3
mov cl, 2
mov si, 0
call show_str
mov ax, 4c00h
int 21h
;名称:show_str 显示字符串子程序
;功能:在指定的位置,用指定的颜色,显示一个用0结束的字符串
;参数:(dh)=行号(取值范围0-24),(dl)=列号(取值范围0-79)
; (cl)=颜色,ds:si指向字符串的首地址
;返回:无
show_str:
push ax
push bx
push cx
push dx
push si
push es
mov ax, 0b800h
mov es, ax
mov al, 0a0h
mul dh
mov bx, ax
mov al, 2h
mul dl
add bx, ax
mov dl, cl
mov cx, 0
s:
mov cl, [si]
jcxz ok
mov es:[bx], cl
mov es:[bx+1], dl
add bx, 2
inc si
jmp short s
ok:
pop es
pop si
pop dx
pop cx
pop bx
pop ax
ret
code ends
end start
=====================
assume cs:code
data segment
db 32 dup ('$')
db 9, 8, 7, 4, 2, 0
db '/', '/', ' ', ':', ':'
data ends
code segment
start:
mov ax, data
mov ds, ax
mov si, 0
mov di, 32
mov cx, 6
start1:
push cx
mov al, [di]
out 70h, al
in al, 71h
mov ah, al
mov cl, 4
shr ah, cl
and al, 0fh
add ah, 30h
add al, 30h
mov [si], ah
mov [si+1], al
mov ah, [di+6]
mov [si+2], ah
inc di
add si, 3
pop cx
loop start1
;调整光标位置
mov ah, 2 ;置光标
mov bh, 0 ;第0页
mov dh, 5 ;dh中放行号
mov dl, 30 ;dl中放列号
int 10h
;显示字符串
mov dx, 0
mov ah, 9
int 21h
mov ax, 4c00h
int 21h
code ends
end start
============确实挺方便的:)===============
评论次数(4) |
浏览次数(747) |
类型(汇编作业) |
收藏此文 |
[ tinyparticle 发表于 2009-10-09 20:17 ]
;名称:show_str 显示字符串子程序
;功能:在指定的位置,用指定的颜色,显示一个用0结束的字符串
;参数:(dh)=行号(取值范围0-24),(dl)=列号(取值范围0-79)
; (cl)=颜色,ds:si指向字符串的首地址
;返回:无
====================================================
博主可以参考下书P261页介绍的“DOS中断例程应用”
可以利用INT 21H中断来实现这个子程序功:)
[ zwz_good 发表于 2009-10-09 20:25 ]
噢,习惯了使用这个子程序了,再来一个使用INT 21H中断的,谢谢提醒。
[ 游客 发表于 2009-10-10 14:25 ]
自己实现更能体会过程,有好处,做完了再做便捷的就知道便捷在哪了。
顶博主!
[ zwz_good 发表于 2009-10-10 20:56 ]
谢谢你的鼓励。