رسم دایره با زبان اسمبلی
page 110 100
TITLE "sabzloon"
STACKSG SEGMENT STACK 'STACK'
DW 32DUP(0)
STACKSG ENDS
DATASG SEGMENT DATA 'DATA'
x DW ?
Y DW ?
X1 DW ?
Y1 DW ?
a DW ?
b DW ?
j DW 320
DATASG ENDS
CODESG SEGMENT 'CODE'
ASSUME SS:STACKSG,DS:DATASG,CS:CODESG,ES:EXTRASG
MAIN PROC FAR
MOV AX,DATASG
MOV DS, AX
MOV AH, 0
MOV AL, 13H
INT 10H
PUSH 0A000H
POP ES
MOV X1, 50
MOV Y1, 50
MOV X, 0;x
MOV Y,45 ;r
MOV BX, 0;zaveh
MOV a, 6
MOV b, -95
lop1:CALL Dayerh
CMP BX, 0
JNS lop3
ADD BX, a
ADD a, 2
ADD b, 2
INC X
JMP lop2
lop3:ADD BX, b
ADD a, 2
ADD b, 4
INC X
DEC Y
lop2: MOV CX, X
CMP CX, Y
JB lop1
MOV AH,4CH
INT 21H
MAIN ENDP
CODESG ENDS
Dayerh PROC NEAR
MOV AX, Y1
ADD AX, Y
MUL j
ADD AX, X1
ADD AX, X
MOV DI, AX
MOV BYTE PTR ES:[DI], 05h
SUB DI, X
SUB DI, X
MOV BYTE PTR ES:[DI], 05h
MOV AX, Y1
SUB AX, Y
MUL j
ADD AX, X1
ADD AX, X
MOV DI, AX
MOV BYTE PTR ES:[DI], 06h
SUB DI, X
SUB DI, X
MOV BYTE PTR ES:[DI], 06h
MOV AX, Y1
ADD AX, X
MUL j
ADD AX, X1
ADD AX, Y
MOV DI, AX
MOV BYTE PTR ES:[DI], 05h
SUB DI, Y
SUB DI, Y
MOV BYTE PTR ES:[DI], 05h
MOV AX, Y1
SUB AX, X
MUL j
ADD AX, X1
ADD AX, Y
MOV DI, AX
MOV BYTE PTR ES:[DI], 06h
SUB DI, Y
SUB DI, Y
MOV BYTE PTR ES:[DI], 06h
RET
Dayerh ENDP
END MAIN
دایرکتری گرفتن با کمک زبان اسمبلی
title "a23exdir"
.model small
.stack 64
.data
pararea label byte
dw 0
dw offset dircom
dw @data
dw offset fcb1
dw @data
dw offset fcb2
dw @data
dircom db 17,'/c dir c:' 13,0
fcb1 db 16,dup(0)
fcb2 db 16,dup(0)
progname db 'c:\command.com',0
.code
;-----------------------------------
a10main proc
mov ah,4ah
mov bx,stack
add bx,04
mov cx,es
sub bx,cx
int 21h
jc a20err
mov ax,@data
mov dx,ax
mov es,ax
mov ah,4bh
mov al,00
lea bx,pararea
lea dx,progname
int 21h
jc a30err
mov al,00
cmp a90xit
a20rr:
mov al,01
jmp a90xit
a30arr:
mov al,02
a90xit:
mov ah,4ch
int 21h
a10main endp
end a10main
برنامه دیگری این است که بازدن دکمه ای صفحه نمایش تغییر می کند
fill macro par1,par2,par3,par4,par5
local a1
mov si,par1
mov di,par2
a1: mov ah,12
mov al,par5
mov bh,0
mov cx,si
mov dx,di
int 10h
inc si
cmp si,par3
jle a1
mov si,par1
inc di
cmp di,par4
jle a1
endm
;**************************************************************
graph macro
mov ah,0
mov al,16
int 10h
endm
;**************************************
codesg segment 'code'
assume cs:codesg
org 100h
main: jmp load1
oldint9 dd ?
newisr proc near
push ax
mov ah,02h
int 16h
test al,00000100b
jz exit
in al,60h
cmp al,41h
jne exit
mov cx,1
again:
mov ah,0eh
mov al,07
int 10h
loop again
graph
fill 0,0,640,480,05h
;*******************************
mov cx,50
again5:
MOV SI,0
L1: CMP SI,5000
JAE END9
INC SI
MOV AX,0
L2: CMP AX,5000
JAE L1
INC AX
JMP L2
END9:
loop again5
fill 0,0,640,480,04h
;*******************************
mov cx,50
again16:
MOV SI,0
L11: CMP SI,5000
JAE END91
INC SI
MOV AX,0
L21: CMP AX,5000
JAE L11
INC AX
JMP L21
END91:
loop again16
fill 0,0,640,480,02h
;*******************************
mov cx,50
again6:
MOV SI,0
L12: CMP SI,5000
JAE END92
INC SI
MOV AX,0
L22: CMP AX,5000
JAE L12
INC AX
JMP L22
END92:
loop again6
fill 0,0,640,480,03h
;*******************************
mov cx,100
again2:
loop again2
;*******************************
exit: pop ax
jmp cs:oldint9
newisr endp
load1 proc near
mov ah,35h
mov al,09h
int 21h
mov word PTR [oldint9],bx
mov word PTR [oldint9+2],es
mov ah,25h
mov al,09h
mov dx,offset newisr
int 21h
mov dx,(offset load1-offset codesg)
add bx,15
mov cl,4
shr dx,cl
mov ah,31h
int 21h
load1 endp
codesg ends
end main
اگر تونستی یه سری هم به ما بزن
راستی اگر امکانش هست یک توضیح در مورد رسم دایره و الگوریتمی که براش استفاده کردی برام تو ایمیلم بزار مرسی