⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 字符图形.asm

📁 本程序为汇编语言实现的字符图形程序。1)制作一个图形元素表
💻 ASM
字号:
data  segment
array  db   200 dup(?)                                             
x    db   1
y    db   0
z    db   0
msg  db 'This is a program of char drawing.(Press "Esc" to exit)','$'
menu db 'menu','$'
area db 'drawing area','$'
data ends
program  segment
main proc far
     assume cs:program,ds:data  
start:
     push ds
     sub ax,ax
     push ax
     mov ax,data
     mov ds,ax
     call interface          ;显示界面
     call table              ;显示图形元素表        
     call draw               ;用字符元素画图
     ret                     ;返回DOS
main endp

interface proc near          ;界面设计
     mov ah,09
     mov dx,offset msg       ;显示信息
     int 21h
     mov bx,20
     mov x,2                
     mov y,24
midline:                     ;显示分界线
     mov ah,2
     mov bh,0   
     mov dh,x                ;初始化光标
     mov dl,y
     int 10h
     mov bh,0
     mov cx,1
     mov al,2ah
     mov ah,0ah
     int 10h
     inc x
     dec bx
     jnz midline
     mov y,0
     mov bx,79
sideline:                    ;显示边框线
     mov ah,2
     mov bh,0
     mov dh,1
     mov dl,y
     int 10h
     mov bh,0
     mov cx,1
     mov al,2ah
     mov ah,0ah
     int 10h
     mov ah,2
     mov bh,0
     mov dh,22
     mov dl,y
     int 10h
     mov bh,0
     mov cx,1
     mov al,2ah
     mov ah,0ah
     int 10h
     inc y
     dec bx
     jnz sideline
title:                       ;显示标题     
     mov ah,2
     mov bh,0   
     mov dh,2
     mov dl,9
     int 10h
     mov dx,offset menu
     mov ah,09h
     int 21h
     mov ah,2
     mov bh,0 
     mov dh,2  
     mov dl,45
     int 10h
     mov dx,offset area
     mov ah,09h
     int 21h
     ret
interface endp

table proc near              
     mov x,4
     mov y,7
     mov si,0
digit:                       ;制作图形元素表
     mov ah,2
     mov bh,0   
     mov dh,x                ;定位光标
     mov dl,y
     int 10h
     mov al,z
     inc al
     mov array[si],al       ;显示数字并存入ASCII码     
     mov ax,si
     add ax,30h
     mov bh,0
     mov cx,1
     mov ah,0ah
     int 10h
     add y,7
char:  
     mov ah,2
     mov bh,0   
     mov dh,x                ;重定位光标
     mov dl,y
     int 10h
     mov ah,0ah      
     mov bh,0                ;显示字符
     mov al,z
     inc al
     mov cx,1
     int 10h
     inc si
     inc z
     cmp z,09h
     ja  exit
     inc x
     mov y,7                    
     jmp digit
exit:
     ret
table endp 

draw proc near                ;画图
     mov x,4
     mov y,26
     mov ah,2
     mov bh,0   
     mov dh,4
     mov dl,26                ;初始化光标
     int 10h
judge:                        ;判断输入键
     mov ah,0
     int 16h                  
     cmp ah,48h               ;方向键
     je  up                   
     cmp ah,50h
     je  down
     cmp ah,4dh
     je  right
     cmp ah,4bh
     je  left
     cmp ah,01h               ;ESC键
     jnz num
     mov ah,2                 ;设置返回DOS时光标的位置
     mov bh,0   
     mov dh,20
     int 10h
     ret                      ;返回主程序
num:  
     cmp al,30h               ;数字键
     jae display
     jmp judge
display: 
     cmp al,39h
     ja  judge
     and ax,00ffh
     sub ax,30h
     mov si,ax
     mov al,array[si]         ;显示相应字符
     mov bh,0
     mov cx,1
     mov ah,0ah
     int 10h
     jmp judge
up:                            ;上移 
     dec x
     cmp x,4
     jb  no_up
     jmp move
no_up:                         ;超出上界
     mov x,4
     jmp move
down:                          ;下移
     inc x
     cmp x,20
     ja  no_down
     jmp move
no_down:                       ;超出下界
     mov x,20
     jmp move
right:                         ;右移
     inc y
     cmp y,78
     ja  no_right
     jmp move
no_right:                      ;超出右界
     mov y,78
     jmp move
left:                          ;左移
     dec y
     cmp y,26
     jb  no_left
     jmp move
no_left:                       ;超出左界
     mov y,26
move:                          ;重定位光标  
     mov ah,2
     mov bh,0             
     mov dh,x
     mov dl,y
     int 10h
     jmp judge
draw endp
program  ends
   end start

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -