一个字符图形程序

  

  这个是学完汇编后,做的第一个小程序.程序很小,当时却对此颇为满意.自认为是自己做的第一个成型的程序.为缅怀那份得意的心情,先把这个勉为其难称为程序的程序放在这:).

  简介:制作图形元素表,表中将所需的各种字符图形编上号码,并用存储器映射法将其显示在屏幕的左上部分。将光标定位在屏幕的右半部分画图区。上、下、左、右光标控制键控制光标在四个方向上移动,不显示其轨迹同时要控制光标位置不超出画图区的边界。当按动某一数字键时,在光标位置处显示出相应编号的字符图形,然后移动光标,再显示一个字符图形,最后绘制出一幅由字符组成的图形。按动ESCape键,退出程序,返回DOS

 

data  segment

buffer  db   200 dup(?)                                            

db1   db   1

db2   db   0

db3   db   00h

msg1 db 'THE TABLE:  THE DRAWING AREA:(press "esc" key to exit)','$'

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

 

     mov ah,09

lea dx,msg1               ;显示信息

int 21h 

                         

mov bx,26

     mov db1,0                ;显示分界线

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
data segment<br>car db 133 ;定义字符图形表<br> db 05h,122,0,0<br> db 05h,122,0,1<br> db 05h,122,0,1<br> db 05h,122,0,1<br> db 05h,122,0,1<br> db 05h,122,0,1<br> db 05h,122,0,1 <br> db 05h,122,1,0<br> db 05h,122,1,0<br> db 05h,122,1,0<br> db 05h,122,0,-1<br> db 05h,122,0,-1<br> db 05h,122,0,-1<br> db 05h,122,0,-1<br> db 05h,122,0,-1<br> db 05h,122,0,-1<br> db 05h,122,-1,0<br> db 05h,122,-1,0<br> db 05h,122,0,3<br> db 05h,122,1,0<br> db 05h,122,2,0<br> db 05h,122,1,0<br> db 05h,122,1,0<br> db 05h,122,1,0<br> db 05h,122,-8,0<br> db 05h,122,-1,0<br> db 05h,122,-1,0<br> db 05h,122,0,7<br> db 05h,122,0,1<br> db 05h,122,0,1<br> db 05h,122,0,1<br> db 05h,122,0,1<br> db 05h,122,0,1<br> db 05h,122,0,1<br> db 05h,122,1,0<br> db 05h,122,1,0<br> db 05h,122,1,0 <br> db 05h,122,1,0<br> db 05h,122,1,0<br> db 05h,122,1,0<br> db 05h,122,1,0<br> db 05h,122,1,0<br> db 05h,122,1,0<br> db 05h,122,1,0 <br> db 05h,122,0,-1<br> db 05h,122,0,-1<br> db 05h,122,0,-1 <br> db 05h,122,0,-1<br> db 05h,122,0,-1<br> db 05h,122,0,-1<br> db 05h,122,-1,0<br> db 05h,122,-1,0<br> db 05h,122,-1,0<br> db 05h,122,-1,0<br> db 05h,122,-1,0<br> db 05h,122,-1,0<br> db 05h,122,-1,0<br> db 05h,122,-1,0<br> db 05h,122,-1,0<br> db 05h,122,2,2<br> db 05h,122,0,1<br> db 05h,122,1,0<br> db 05h,122,1,0<br> db 05h,122,1,0<br> db 05h,122,1,0<br> db 05h,122,0,-1 <br> db 05h,122,-2,0<br> db 05h,122,2,2<br> db 05h,122,-1,0<br> db 05h,122,-1,0<br> db 05h,122,-2,0<br> db 05h,122,0,6<br> db 05h,122,3,0<br> db 05h,122,0,1 <br> db 05h,122,-3,0<br> db 05h,122,-3,1<br> db 05h,122,1,0<br> db 05h,122,1,0<br> db 05h,122,1,0<br> db 05h,122,1,0<br> db 05h,122,1,0<br> db 05h,122,1,0<br> db 05h,122,1,0<br> db 05h,122,1,0<br> db 05h,122,1,0<br> db 05h,122,1,0<br> db 05h,122,0,2<br> db 05h,122,0,1<br> db 05h,122,0,1<br> db 05h,122,-1,-2<br> db 05h,122,-1,0<br> db 05h,122,-1,0<br> db 05h,122,-1,0<br> db 05h,122,-1,0<br> db 05h,122,-1,0<br> db 05h,122,-1,0<br> db 05h,122,0,1<br> db 05h,122,0,1<br> db 05h,122,-1,-2<br> db 05h,122,-1,0<br> db 05h,122,-1,0<br> db 05h,122,0,9 <br> db 05h,122,1,-3 <br> db 05h,122,0,1<br> db 05h,122,0,1<br> db 05h,122,0,1<br> db 05h,122,0,1<br> db 05h,122,0,1<br> db 05h,122,0,1<br> db 05h,122,2,-1<br> db 05h,122,0,-1<br> db 05h,122,0,-1<br> db 05h,122,0,-1<br> db 05h,122,0,-1<br> db 05h,122,1,0<br> db 05h,122,0,4<br> db 05h,122,1,0<br> db 05h,122,0,-1<br> db 05h,122,0,-1<br> db 05h,122,0,-1<br> db 05h,122,0,-1<br> db 05h,122,1,2<br> db 05h,122,1,0 <br> db 05h,122,1,0<br> db 05h,122,1,0<br> db 05h,122,1,0<br> db 05h,122,1,0<br> db 05h,122,-3,-1<br> db 05h,122,0,2<br> db 05h,122,1,1<br> db 05h,122,0,-4<br> db 05h,122,1,-1<br> db 05h,122,0,6<br>char_cnt dw ? <br>pointer dw ?<br>line_on db ?<br>col_on db ?<br>data ends<br>stack segment<br> db 2000 dup (0)<br>stack ends<br>code segment<br> assume cs:code,ds:data,ss:stack<br>main proc far<br> push ds<br> sub ax,ax<br> push ax<br> mov ax,data<br> mov ds,ax<br> <br>   mov ah,0<br> mov al,4<br> int 10h<br> <br> mov ah,0bh<br> mov bh,0<br> mov bl,2<br> int 10h<br> <br> mov ah,0bh<br> mov bh,01<br> mov bl,00<br> int 10h<br> <br> call clear_screen ;调用清屏子程序<br> lea di,car<br> mov dh,10<br> mov dl,2<br> call move_shape <br> mov ah,8<br> int 21h<br> cmp al,'q'<br> jz exit<br> main endp <br><br>clear_screen proc near<br> push ax<br> push bx<br> push cx<br> push dx<br> mov ah,6<br> mov al,0<br> mov ch,0<br> mov cl,0<br> mov dh,120<br> mov dl,200<br> mov bh,7<br> int 10h<br> pop dx<br> pop cx<br> pop bx<br> pop ax<br> ret<br>clear_screen endp<br><br>move_shape proc near<br> push ax<br> push bx<br> push cx<br> push dx<br> push di<br> mov ah,0fh<br> int 10h<br> sub ch,ch<br> mov cl,[di]<br> inc di<br> mov char_cnt,cx<br> mov pointer,di<br> mov line_on,dh<br> mov col_on,dl<br>mov_crsr: <br> add dh,[di+2]<br> add dl,[di+3]<br> mov ah ,2<br> int 10h<br> mov al,[di]<br> mov bl,[di+1]<br> push cx<br> mov cx,1<br> mov ah,09<br> int 10h<br> pop cx<br> add di,4<br> loop mov_crsr<br> call dly_qrtr     ;调用延时子程序<br> pop di <br> pop dx<br> pop cx<br> pop bx<br> pop ax<br> ret<br>move_shape endp<br><br>dly_qrtr proc near <br> push cx<br> push dx<br> mov dx,5000<br> d11:mov cx,25000 <br> d12:loop d12<br> dec dx<br> jnz d11<br> pop dx<br> pop cx<br> ret<br>dly_qrtr endp<br>exit:mov ah,4ch<br> int 21h<br>code ends<br> end main<br><br><br><br>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值