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

📄 cir.asm

📁 本人汇编课程实习时编的程序,内附题目说明和实习报告.
💻 ASM
字号:
;TITLE CIRCLE
;-------------------------------
DATA SEGMENT PARA 'DATA'
N0      =       10000
N1	DW	320
N2	DW	240
D1	DW	0
D2	DW	90
ANGS    DW      36,36,36,18,18,36,36,36,36,36,36
ANGLE   DW      0
TANGLE  DW      ?
INCLUDE	TAN7230.ASM
N=$-D3
DATA ENDS
;-------------------------------
STAC SEGMENT PARA STACK
STA1	DW	100 DUP(?)
STAC ENDS
;---------------------------------
CODE SEGMENT PARA 'CODE'
	ASSUME	CS:CODE,DS:DATA
	ASSUME	ES:DATA,SS:STAC
START   PROC    FAR
	PUSH	DS
	XOR	AX,AX
	PUSH	AX
	MOV 	AX,DATA
	MOV	DS,AX
	MOV	ES,AX

	MOV	AH,0
	MOV	AL,12H
	INT	10H

	;MOV	AH,11
	;MOV	BH,0
	;MOV	BL,01H
	;INT	10H

	;MOV	AH,11
	;MOV	BH,01
	;MOV	BL,1
	;INT	10H

	LEA	SI,D3
	MOV	DI,SI
	ADD	DI,N-2
	MOV	CX,N0
	MOV	BX,D2
Q1:
        CALL	ZZ
	NEG	AX
	ADD	AX,N1
	NEG	DX
	ADD	DX,N2
	CALL	ZY
	add	D1,2
	CMP	D1,180
	JB	Q1

Q2:
	CALL	ZZ
	ADD	AX,N1
	NEG	DX
	ADD	DX,N2
	CALL	ZY
	sub	D1,2
	CMP	D1,0
	JGE	Q2
	MOV	D1,0
Q3:
	CALL	ZZ
	ADD	AX,N1
	ADD	DX,N2
	CALL	ZY
	add	D1,2
	CMP	D1,180
	JB	Q3
Q4:
	CALL	ZZ
	NEG	AX
	ADD	AX,N1
	ADD	DX,N2
	CALL	ZY
	sub	D1,2
	CMP	D1,0
	JGE	Q4

        CALL    LINE
	PUSH	CX
	MOV  	AH,01
      INT  	21H
      RET     
START ENDP
;---------------------------------------
LINE    PROC    NEAR
        PUSH    AX
        PUSH    CX
        PUSH    BX

        MOV     CX,N0
        LEA     SI,ANGS
 
 NEXTLINE:
        MOV     AX,[SI]
        ADD     ANGLE,AX

        CMP     ANGLE,90
        JNG     AREA1
        CMP     ANGLE,90
        JG      BIGGER1
        JMP     FINISH
 BIGGER1:
        CMP     ANGLE,180
        JNG     AREA2
        CMP     ANGLE,180
        JG      BIGGER2
        JMP     FINISH
 BIGGER2:
        CMP     ANGLE,270
        JNG     AREA3
        CMP     ANGLE,270
        JG      BIGGER3
        JMP     FINISH
 BIGGER3:
        CMP     ANGLE,360
        JNG     AREA41
 FINISH:
        JMP     EXIT
;-----------------------
 AREA1:        
        MOV     AX,ANGLE
        MOV     BL,2
        MUL     BL
        MOV     D1,AX
        MOV     BX,0
 DOT1:
        INC     BX 
        CALL    ZZ
        NEG     AX
        ADD     AX,N1
        NEG     DX
        ADD     DX,N2
        CALL    ZY        
        CMP     BX,D2
        JB      DOT1
        
      ;  CMP     ANGLE,360
      ;  JNB     EXIT
        ADD     SI,2
        JMP     NEXTLINE  
;------------------------
 AREA2: 
        MOV     AX,180       
        SUB     AX,ANGLE
        MOV     BL,2
        MUL     BL
        MOV     D1,AX
        MOV     BX,0
 DOT2:
        INC     BX 
        CALL    ZZ
        ADD     AX,N1
        NEG     DX
        ADD     DX,N2
        CALL    ZY        
        CMP     BX,D2
        JB      DOT2
        
      ;  CMP     ANGLE,360
      ;  JNB     EXIT
        ADD     SI,2
        JMP     NEXTLINE 
AREA41: 
        JMP     AREA4
;------------------------
 AREA3: 
        MOV     AX,ANGLE
        MOV     TANGLE,AX
        MOV     AX,180       
        SUB     ANGLE,AX
        MOV     AX,ANGLE
        MOV     BL,2
        MUL     BL
        MOV     D1,AX
        MOV     BX,0
 DOT3:
        INC     BX 
        CALL    ZZ
        ADD     AX,N1
        ADD     DX,N2
        CALL    ZY        
        CMP     BX,D2
        JB      DOT3
        
        MOV     AX,TANGLE
        MOV     ANGLE,AX
     ;   CMP     ANGLE,360
      ;  JNB     EXIT
        ADD     SI,2
        JMP     NEXTLINE 
;------------------------
 AREA4: 
        MOV     AX,360       
        SUB     AX,ANGLE
        MOV     BL,2
        MUL     BL
        MOV     D1,AX
        MOV     BX,0
 DOT4:
        INC     BX 
        CALL    ZZ
        NEG     AX
        ADD     AX,N1
        ADD     DX,N2
        CALL    ZY        
        CMP     BX,D2
        JB      DOT4
        
        CMP     ANGLE,360
        JNB     EXIT
        ADD     SI,2
        JMP     NEXTLINE 
;------------------------
 EXIT: 
        POP     BX
        POP     CX
        POP     AX
        RET
LINE    ENDP        
;---------------------------------------
ZY      PROC    NEAR
	PUSH	CX
	MOV	CX,AX
	MOV	AH,0CH
	MOV	AL,1
	INT	10H
	POP	CX
	CALL	YY
	RET
ZY      ENDP
;----------------------------------------
ZZ      PROC    NEAR
	PUSH	SI 
	PUSH	DI
	ADD	SI,D1
	MOV	AX,[SI]
	MUL	BX
	DIV	CX
	PUSH	AX
	SUB	DI,D1
	MOV	AX,[DI]
	MUL	BX
	DIV	CX

	;MOV	DX,16
	;MUL	DX
	;MOV	DL,10
	;DIV	DL
	;MOV	AH,0
		
	POP	DX
	POP	DI
	POP	SI

	RET
ZZ ENDP
;--------------------------------------
YY      PROC    NEAR
	PUSH	CX
	MOV	CX,0FFFFH
T:
	DEC	CX
	JNZ	T
	POP	CX
	RET
YY ENDP
;--------------------------------------
CODE ENDS
END START		
	

⌨️ 快捷键说明

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