汇编中的五环图制作程序

来源:互联网 发布:乱世佳人知乎 编辑:程序博客网 时间:2024/05/12 17:07
;===================================;===================================DATA_SEG      SEGMENT   PARAbuff   DB 'circles five,please put key q and quit','
 headr0 DW 120endr0 DW 140sigle DB 80h absy DW 0 r0 DW 120x0 DW 100y0 DW 200 s DB 0 s3 DB 0 sin_x DW 0sin_xx DW 0 x DW 0y DW 0 DIancolor DB 0 color DB 2color_hour DB 2color_min DB 6color4 DB 1 page1 DB 0DATA_SEG ENDSCODE_SEG SEGMENT PARAMAIN PROC FAR ASSUME CS:CODE_SEG,DS:DATA_SEGSTART: MOV AX,DATA_SEG MOV DS,AXbeg: mov ax,0012h ;640*640 16色图表方式 int 10hmov dx,offset buff ; 显示信息mov ah,9int 21hmov al,color4 ;颜色:mov color,alcall huanmov color,15mov x0,300mov y0,200call huanmov color,4mov x0,500mov y0,200call huanmov color,14mov x0,200mov y0,280call huanmov color,2mov x0,400mov y0,280call huanj:mov ah,8int 21hcmp al,'q'jz enjmp j;=======================================;====cosx in ax out ax ,si符号======= ;======================================= cos PROC NEAR ADD AX,90 cos_kk1: CALL SIn RETcos ENDP ;=======================================;=========Sinx in ax out ax ,si符号==== ;======================================= SIn PROC NEAR ;out ax PUSH CX PUSH DX PUSH BXsin360: CMP AX,90 JA dy90sto0_90: MOV SI,0 JMP pp1dy90: CMP AX,180 JBE z91to180 JMP dy180z91to180: MOV CX,180 SUB CX,AX MOV AX,CX MOV SI,0 JMP pp1z181to270: SUB AX,180 MOV SI,1 JMP pp1z271to360: CMP AX,359 JA zdy359 MOV CX,360 SUB CX,AX MOV AX,CX MOV SI,1 JMP pp1zdy359: SUB AX,360 JMP SIn360 dy180: CMP AX,270 JBE z181to270 JMP z271to360 pp1: MOV CX,175 XOR DX,DX MUL CX MOV sin_x,AX XOR DX,DX MOV CX,AX MUL CX MOV CX,10000 DIV CX MOV sin_xx,AX XOR DX,DX MOV CX,120 DIV CX MOV BX,1677 CALL SUBab MOV CX,sin_xx XOR DX,DX MUL CX MOV CX,10000 DIV CX ;xx(xx/120-10000/6) MOV CX,10000 MOV DL,0 CMP DL,s JE jia SUB CX,AX MOV AX,CX JMP kk1jia: ADD AX,CXkk1: MOV CX,sin_x XOR DX,DX MUL CX MOV CX,10000 DIV CX POP BX POP DX POP CX MOV s,0 RET SIn ENDP ;=====================================;绝对值在ax中符号在S中ax-bx===s要定义db;=====================================subab PROC CMP AX,BX JAE goab XOR s,1 XCHG AX,BXgoab: SUB AX,BX RETsubab ENDP ;======================================;======================================DIan PROC NEAR PUSH ax MOV AH,s MOV s3,AH MOV AH,SIgle AND AH,80h CMP AH,0 JE puanduanpaint: MOV AL,color MOV BH,page1 MOV DX,y MOV CX,x ;列号 MOV AH,0ch INT 10h JMP DIanquit puanduan: CALL readerdian MOV DIancolor,AL MOV AH,SIgle AND AH,7fh CMP AH,0 JE NEw0 CMP AH,1 JE NEw1 CMP AH,2 JE NEw2 CMP AH,3 JE NEw3 CMP AH,4 JE NEw4 CMP AH,5 JE NEw5 CMP AH,6 JE NEw6 JMP DIanquit NEw0: CMP DIancolor,0 JE topaint JMP DIanquitNEw1: CMP DIancolor,0 JE topaint MOV AH,color_hour CMP DIancolor,AH JE topaint JMP DIanquittopaint: JMP paint NEw2: MOV AH,color_min CMP DIancolor, AH JE topaint JMP DIanquitNEw3: JMP NEw0NEw4: JMP NEw0NEw5: MOV AH,color_hour CMP DIancolor,AH JE topaint JMP DIanquitNEw6: CMP DIancolor,0 JE topaint JMP DIanquit MOV AX,x MOV BX,x0 CALL SUBab CMP AX,5 JA topaint MOV AX,y MOV BX,y0 CALL SUBab CMP AX,5 JA topaint DIanquit: MOV AH,s3 MOV s,AH POP ax RETDIan ENDP;=====================================;=====================================readerdian PROC MOV BH,page1 MOV DX,y MOV CX,x ;列号 MOV AH,0dh INT 10h RETreaderdian ENDP ;======================================;======================================yuan PROC PUSH ax MOV CX,360 MOV AX,0yuan_kk1: PUSH CX PUSH AX MOV CX,y0 MOV DX,x0 CALL enovate CALL dian POP AX ADD AX,1 POP CX LOOP yuan_kk1 POP ax RETyuan ENDP ;===============================================;=in ax度数 bx=半径r长度,cx 列 dx行 圆心 out x,y=;===============================================enovate PROC NEAR PUSH ax PUSH DX PUSH AX PUSH CX CALL SIn MOV DX,0 MOV CX,BX DIV CX POP CX CMP SI,1 JE ian ADD AX,CX JMP enovate_kk1ian: SUB CX,AX MOV AX,CXenovate_kk1: MOV y,AX POP AX CALL cos MOV DX,0 MOV CX,BX DIV CX POP DX CMP SI,1 JE ian2 ADD AX,DX JMP enovate_kk2ian2: MOV CX,DX SUB CX,AX MOV AX,CXenovate_kk2: MOV x,AX POP ax RETenovate ENDP ;===================================;=================================== huan proc nearmov bx,headr0 mov r0,bx p: call yuan inc r0 mov bx,r0 mov cx,endr0 cmp r0,cx jnz p rethuan endp;======================================;=====================================en: mov ah,4ch int 21h;====================================;=====================================main endpcode_seg ends end start;===================================== 
原创粉丝点击