برنامه ساده به زبان اسمبلی برای نمایش مربع و مستطیل های درون هم

این برنامه بصورتی کار میکنه که مقدار طول ها و تعداد شکل ها رو از Data Segment چک میکنه و بعد از هر بار دور زدن از تعداد ستاره های قابل چاپ شدن کم مینه و cursor رو به داخل shift میکنه تا شکل بعدی رو با ابعاد جدید نمایش بده, سورس رو میتونید از داخل صفحه کپی کنید, این سورس با Emu 8086 نسخه 4 به بالا سازگاره..

; multi-segment executable file template.

data segment
 ; add your data here!
 pkey db "YEAHHHHH!!!..$"
 
 
 ;my data:
 
 
 rac db -2 ;for modifying the position of cursor
 
 wah db 19 ;size of shapes 
 
 round db 5
 
 
 
 
 ;my data ends.
ends

stack segment
 dw 128 dup(0)
ends

code segment
start:
; set segment registers:
 mov ax, data
 mov ds, ax
 mov es, ax

 ; add your code here 
 
 ;my code: 


sto:;star row
 MOV CH,wah ;counter for stars, starting at 19
 MOV CL,rac
 MOV BL,rac
 
 INC CL
 INC CL
 INC BL
 INC BL
 
 
nxc:MOV AH,2 ;
 MOV DL,CL ;>columns.
 MOV DH,BL ;>modifying the cursor position
 MOV BH,0 ; starting from -2(0).
 INT 10H ;
 
 
 MOV DL,'*' ;
 MOV AH,2 ;>printing stars
 INT 21H ;
 
 INC CL
 DEC CH ;1 star rows
 JNZ nxc ;
 
 
 ;star column
 MOV CH,wah
 
nxr:MOV AH,2 ;
 MOV DL,CL ;>columns:static
 MOV DH,BL ;>rows:dynamic
 MOV BH,0 ;
 INT 10H ; 
 
 
 
 MOV DL,'*' ;
 MOV AH,2 ;>printing stars
 INT 21H ;
 
 INC BL
 DEC CH
 JNZ nxr
 
 ;star row back
 MOV CH,wah
 
nxt:MOV AH,2 ;
 MOV DL,CL ;>columns:dynamic
 MOV DH,BL ;>rows:static
 MOV BH,0 ;
 INT 10H ;
 
 MOV DL,'*' ;
 MOV AH,2 ;>printing stars
 INT 21H ;
 
 DEC CL
 DEC CH
 JNZ nxt
 
 
 ;star column back
 MOV CH,wah
 
nxs:MOV AH,2 ;
 MOV DL,CL ;>columns:dynamic
 MOV DH,BL ;>rows:static
 MOV BH,0 ;
 INT 10H ;
 
 MOV DL,'*' ;
 MOV AH,2 ;>printing stars
 INT 21H ;
 
 
 DEC BL
 DEC CH
 JNZ nxs
 
 
 
 
 ;next round
 
 INC rac
 INC rac
 
 DEC wah
 DEC wah
 DEC wah
 DEC wah
 
 
 DEC round
 JNZ sto
 
 
 
 ;set position for "wait for any key...." 
 
 MOV AH,2 ;
 MOV DL,4 ;>columns:dynamic
 MOV DH,22 ;>rows:static
 MOV BH,0 ;
 INT 10H ; 
 
 
 
 
 ;my code ends.
 
 lea dx, pkey
 mov ah, 9
 int 21h ; output string at ds:dx
 
 ; wait for any key.... 
 mov ah, 1
 int 21h
 
 mov ax, 4c00h ; exit to operating system.
 int 21h 
ends

end start ; set entry point and stop the assembler.

6 Gedanken zu „برنامه ساده به زبان اسمبلی برای نمایش مربع و مستطیل های درون هم“

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.