图形变换程序设计(2)

2019-01-26 18:28

INT 10H

LEADX,ERRINFO ;存偏移地址到DX CALL CL_SCREEN

CALL DISPLAY ;调用显示子程序 ;检验键盘状态

MOVAH,0BH ;功能号,返回参数AL INT 21H CMPAL,0 JETMP

;键盘输入,无回显 MOVAH,07H ;功能号 INT 21H TMP:

JZCONTIUNE CHUZHAN RET

ERRORDISENDP

;---------------------------------------------------------- ;子程序,清屏

CL_SCREENPROCNEAR RUZHAN

MOVAH,7 ;卷屏功能号 MOVAL,0 ;初始化屏幕

MOVBH,7 ;卷入行属性,上此处为正常显示 MOVCH,0 ;左上角行号 MOVCL,0 ;左上角列号 MOVDH,24 ;右下角行号 MOVDL,79 ;右下角列号 INT 10H CHUZHAN RET

CL_SCREENENDP

;---------------------------------------------------------- ;子程序,画圆 CIRCLEPROCNEAR

RUZHAN ;调用宏,保存寄存器 CALL SCREEN ;调用屏幕子程序 MOV COUNT,90

MOVSI,OFFSETSINE+89*2 ;转化为用于设定COS函数值1到0 MOVDI,OFFSETSINE AGAIN:

CALL COMPUTE ;调用计算圆边像素点 CALL WRITE ;描圆边

SUBSI,2 ;SI与源操作数相减

ADDDI,2 ;DI与源操作数相加 DEC COUNT

JNZAGAIN ;标志符ZF不为0跳转 CHUZHAN ;调用宏,恢复寄存器 RET

CIRCLEENDP

;---------------------------------------------------------- ;子程序,设置屏幕 SCREENPROCNEAR MOVAX,12H ;显示方式 INT 10H ;调用BIOS中断 MOVAH,0BH ;置彩色调板

MOVBX,0 ;BH为彩色调色板ID,BL为ID配套使用的颜色 INT 10H RET

SCREENENDP

;---------------------------------------------------------- ;子程序,计算圆边像素点 COMPUTEPROCNEAR

MOVAX,[SI] ;地址SI所指向内容赋给AX,SI++依次得到所有圆边点 MULRADIUS ;目的操作数AX与源操作数RADIUS相乘,结果放AX DIVKK ;得到圆边像素点的列位置 MOVMM,AX

NEGAX ;将AX转化为二进制补码,以求相对应的像素点 MOVF_MM,AX ;补码形式的AX放入F_MM MOVAX,[DI] MULRADIUS

DIVKKMOV NN,AX NEGAX

MOVF_NN,AX RET

COMPUTEENDP

;---------------------------------------------------------- ;子程序,描点 WRITE PROC

MOVDX,F_MM ;对应像素列 ADDDX,OY

MOVCX,NN ;对应像素行 ADDCX,OX

CALL WR_DOT MOVCX,F_NN ADDCX,OX

CALL WR_DOT MOVDX,MM

ADDDX,OY

CALL WR_DOT MOVCX,NN ADDCX,OX

CALL WR_DOT RET

WRITE ENDP

;---------------------------------------------------------- ;子程序,写像素 WR_DOTPROC

MOVAH,0CH ;写像素功能号 MOVAL,COLOUR ;颜色值 MOVBH,0 ;页号 INT 10H RET

WR_DOTENDP

;---------------------------------------------------------- ;子程序,画三角形 TRIANGLEPROCNEAR RUZHAN ;保存寄存器

MOVBL,9 ;字符属性,暗蓝 GOON:

MOVCH,1 ;1代表走,0代表暂停 COLOR:

MOVAH,0BH ;检验键盘状态 INT 21H CMPAL,0 JNZAA CMPCH,1 JNZCOLOR ;置光标位置

MOVCX,1 ;显示字符个数 MOVAH,2 ;功能号 MOVBH,0 ;页号 MOVDH,6 ;行号 MOVDL,36 ;列号 INT 10H

HUATU:

MOVAH,2 ;置光标 INT 10H

;在光标位置显示字符和属性 MOVAH,9 ;功能号 MOVBH,0 ;显示页

MOVAL,2AH ;字符,'*' INT 10H

INCDH ;行数加1,DOS窗口向下画 DECDL ;列号减1,以便形成三角形

ADDCX,2 ;每画一行,显示字符数加2个 CMPCX,21 ;画完为止 JNZHUATU INCBL CMPBL,15 JNZGOON AA: MOVAH,7 INT 21H CMPAL,'Q' JNZ BB JMPEE BB: CMPCH,0 JZCC

MOVCH,0 JMPCOLOR

CC: MOVCH,1 JMPCOLOR

EE: CHUZHAN ;恢复寄存器 RET

TRIANGLEENDP

;---------------------------------------------------------- ;子程序,画矩形

RECTANGLEPROCNEAR RUZHAN ;保存寄存器 ;设置显示方式 ;MOVAH,0 ;MOVAL,12H ;INT 10H

;置光标初始位置 MOVCX,1 MOVAH,2 MOVBH,0 MOVDH,6 MOVDL,6 INT 10H

;光标右移,向右画 RIGHT:

MOVAH,2 ;置光标位置

INT 10H

MOVAH,9 ;功能号9,显示字符和属性 MOVAL,2AH ;字符,'*'

MOVBL,0FAH ;字符属性,背景为白,前景为红 ;MOVCX,6 INT 10H

INCDL ;列数增加 CMPDL,20

JNERIGHT ;当ZF为1时光标继续右移,为0时跳转 JMPDOWN ;光标下移,向下画 DOWN: MOVAH,2 INT 10H MOVAH,9 MOVAL,2AH MOVBL,0FAH ;MOVCX,6 INT 10H INCDH CMPDH,12 JNZDOWN JMPLEFT

;光标左移,向左画 LEFT: MOVAH,2 INT 10H MOVAH,9 MOVAL,2AH MOVBL,0FAH ;MOVCX,6 INT 10H DECDL CMPDL,6 JNZLEFT JMPUP

;光标上移,向上画 UP:

MOVAH,2 INT 10H MOVAH,9 MOVAL,2AH


图形变换程序设计(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:变频器应用中抗干扰的问题

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: