【虎彡】屏幕输出的小程序,需要注释
时间:2010-12-26
来源:互联网
assume cs:code
code segment
start:
call clr ;清屏
mov cx,100
main: call show
in al,60h ;如果有按键Q读入
cmp al,10h ;则退出程序
jz over ;
jmp main
loop main
over: mov ah,4ch
int 21h
;
show: push ax
push bx
push cx
push dx
mov bl,160 ;除数160(一行160字节)
in al,40h ;读取8位随机数
and ax,0ffh ;高8清0
div bl
mov dl,ah ;余数送dl
mov bl,25 ;除数为25 (25行)
in al,40h ;读取8位随机数
and ax,0ffh ;高8清0
div bl
mov dh,ah ;dh=余数
mov ah,2 ;置光标
mov bh,0
mov bl,02
int 10h
---------------------------------------------
s: mov ah,2 ;置光标
int 10h
cmp dh,50
je ok
in al,40h
and al,0fh
cmp al,9
ja sa
add al,30h
jmp sb
sa: add al,37h
sb: mov ah,9
mov cx,1
int 10h
call delay
inc dh
jmp s
ok:
pop dx
pop cx
pop bx
pop ax
ret
;-------------------------------------
clr: push bx ;清屏
push cx
push es
mov bx,0b800h
mov es,bx
mov bx,0
mov cx,4000
c1: mov byte ptr es:[bx],20h
add bx,2
loop c1
pop es
pop cx
pop bx
ret
; ----------------------------------
delay: push ax ;延时
push dx
mov dx,50h
mov ax,0
d1: sub ax,1
sbb dx,0
cmp ax,0
jne d1
cmp dx,0
jne d1
pop dx
pop ax
ret
;--------------------------------------
code ends
end start
标号S一直到OK结束那段没看明白 需要注释
code segment
start:
call clr ;清屏
mov cx,100
main: call show
in al,60h ;如果有按键Q读入
cmp al,10h ;则退出程序
jz over ;
jmp main
loop main
over: mov ah,4ch
int 21h
;
show: push ax
push bx
push cx
push dx
mov bl,160 ;除数160(一行160字节)
in al,40h ;读取8位随机数
and ax,0ffh ;高8清0
div bl
mov dl,ah ;余数送dl
mov bl,25 ;除数为25 (25行)
in al,40h ;读取8位随机数
and ax,0ffh ;高8清0
div bl
mov dh,ah ;dh=余数
mov ah,2 ;置光标
mov bh,0
mov bl,02
int 10h
---------------------------------------------
s: mov ah,2 ;置光标
int 10h
cmp dh,50
je ok
in al,40h
and al,0fh
cmp al,9
ja sa
add al,30h
jmp sb
sa: add al,37h
sb: mov ah,9
mov cx,1
int 10h
call delay
inc dh
jmp s
ok:
pop dx
pop cx
pop bx
pop ax
ret
;-------------------------------------
clr: push bx ;清屏
push cx
push es
mov bx,0b800h
mov es,bx
mov bx,0
mov cx,4000
c1: mov byte ptr es:[bx],20h
add bx,2
loop c1
pop es
pop cx
pop bx
ret
; ----------------------------------
delay: push ax ;延时
push dx
mov dx,50h
mov ax,0
d1: sub ax,1
sbb dx,0
cmp ax,0
jne d1
cmp dx,0
jne d1
pop dx
pop ax
ret
;--------------------------------------
code ends
end start
标号S一直到OK结束那段没看明白 需要注释
作者: znxllyuan 发布时间: 2010-12-26
s: mov ah,2 ;置光标
int 10h
cmp dh,50 ;一共输出50行
je ok ;满了就返回
in al,40h ;取随机数
and al,0fh ;保留D0~D3(0~0FH)
cmp al,9 ;比9大就加37H
ja sa
add al,30h;比9小就加30H
jmp sb
sa: add al,37h
sb: mov ah,9 ;输出字符
mov cx,1 ;个数
int 10h
call delay ;延时
inc dh ;下一行
jmp s ;跳s
ok:
-----------------------------------
说明一下为什么有些是加30H,有些是加37H
0~9肯定是加30H显示
A~F的ASCII是41H~46H
A是10直接加30H=3AH,再多加7就=41H了,
所以
cmp al,9
ja sa
是加37H
int 10h
cmp dh,50 ;一共输出50行
je ok ;满了就返回
in al,40h ;取随机数
and al,0fh ;保留D0~D3(0~0FH)
cmp al,9 ;比9大就加37H
ja sa
add al,30h;比9小就加30H
jmp sb
sa: add al,37h
sb: mov ah,9 ;输出字符
mov cx,1 ;个数
int 10h
call delay ;延时
inc dh ;下一行
jmp s ;跳s
ok:
-----------------------------------
说明一下为什么有些是加30H,有些是加37H
0~9肯定是加30H显示
A~F的ASCII是41H~46H
A是10直接加30H=3AH,再多加7就=41H了,
所以
cmp al,9
ja sa
是加37H
作者: va_zaixuexi 发布时间: 2010-12-26
cmp dh,50 ;一共输出50行
je ok ;满了就返回
没看懂
不是一页只有25行么
je ok ;满了就返回
没看懂
不是一页只有25行么
作者: znxllyuan 发布时间: 2010-12-26
后面的行数还是在0页的话,是不显示
做了个实验:
.model tiny
.code
main proc far
start:
xor ax,ax
push ds
push ax
mov ah,2
mov bh,0
mov dl,10
mov dh,0
int 10h
mov cx,50 ;走50次看看
mov dl,40h
next:
mov bl,dl
xor dl,dl
inc dh
cmp dh,24
jbe pass
inc bh ;超过24行,page加1,看看效果
pass:
mov ah,2
int 10h
mov dl,bl
mov ah,2
inc dl
int 21h
loop next
ret
main endp
end start
做了个实验:
.model tiny
.code
main proc far
start:
xor ax,ax
push ds
push ax
mov ah,2
mov bh,0
mov dl,10
mov dh,0
int 10h
mov cx,50 ;走50次看看
mov dl,40h
next:
mov bl,dl
xor dl,dl
inc dh
cmp dh,24
jbe pass
inc bh ;超过24行,page加1,看看效果
pass:
mov ah,2
int 10h
mov dl,bl
mov ah,2
inc dl
int 21h
loop next
ret
main endp
end start
作者: va_zaixuexi 发布时间: 2010-12-26
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28