📄 jsfile1.asm
字号:
stack SEGMENT
DW 100h DUP (?)
stack ENDS
;****************************
data SEGMENT
file DB 'A:dh18.dsb',0
handle DW ?
buff DB 2800h DUP (?)
count DW ?
data ENDS
;******************************
code SEGMENT
ASSUME CS:code,DS:data,SS:stack
main PROC FAR
MOV AX,data
MOV DS,AX
MOV SS,AX
MOV DX,OFFSET file
MOV AH,3dh
MOV AL,02h
INT 21h
JNC t0
JMP RETurn
t0: MOV handle,AX
MOV BX,handle
MOV DX,OFFSET buff
MOV AH,3fh
MOV CX,2800h
INT 21h
; MOV DX,0
; MOV CX,AX
; SUB AX,200h
; MOV AX,CX
; MOV BX,3
; DIV BX
; MOV DI, AX
; PUSH DI
MOV AL,4 ;置显示模式4
MOV AH,0
INT 10h
MOV AX,0b800h
MOV ES,AX
MOV count,0
MOV BX,OFFSET buff
ADD BX,200h
MOV CX,50
MOV DX,150
p2: MOV AL,[BX]
TEST AL,20h
JNZ p0
MOV AH,0
MOV AL,[BX+2] ;计算x坐标的值
SHR AL,1
; SHR AL,1
; SHR AL,1
; SHR AL,1
ADD CX,AX
JMP p3
p0: MOV AH,0
MOV AL,[BX+2]
SHR AL,1
; SHR AL,1
; SHR AL,1
; SHR AL,1
SUB CX,AX
p3: MOV AL,[BX]
TEST AL,40h
JNZ p1
MOV AH,0
MOV AL,[BX+1] ;计算y坐标的值
SHR AL,1
; SHR AL,1
; SHR AL,1
; SHR AL,1
SUB DX,AX
JMP p4
p1: MOV AH,0
MOV AL,[BX+1]
SHR AL,1
; SHR AL,1
; SHR AL,1
; SHR AL,1
ADD DX,AX
MOV AX,[BX]
TEST AX,08h
JZ p4
AND AX,07h
JMP p5
p4: MOV AX,03h
p5: CALL draw_point ;调用画点的子程序
ADD BX,3
INC count
CMP count ,2000
JNE p2
RETurn: MOV AX,4c00h
INT 21h
RET
main ENDP
;********************************
draw_point PROC NEAR
PUSH AX
PUSH BX
PUSH CX
PUSH DX
PUSH AX
MOV BX,0
TEST DX,01h
JZ draw1
ADD BX,2000h
draw1: SHR DL,1
MOV AL,80
MUL DL
ADD BX,AX
PUSH CX
SHR CX,1
SHR CX,1
; SHR CX,1
ADD BX,CX
POP CX
AND CX,03h
INC CX
POP AX
MOV DL,11111100b
SHIFT: ROR AL,1
ROR AL,1
ROR DL,1
ROR DL,1
LOOP SHift
AND ES:[BX],DL
OR ES:[BX],AL
POP DX
POP CX
POP BX
POP AX
RET
draw_point ENDP
;************************************
code ENDS
END main
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -