PDA

View Full Version : سوال: چاپ آرایه



gryphon
پنج شنبه 02 دی 1389, 01:44 صبح
سلام من می خوام یه آرایه از پیش تعیین شده رو تو emu 8086 چاپ کنم.
تو محیط emu چاپ میکنه، اما وقتیexe میکنم چیزی چاپ نمیکنه.

mov cx,5

lea si,p1
l1:

mov dl,[si]
add dl,48
mov ah,2
int 21h
mov dl,' '
mov ah,2
int 21h
inc si
loop l1

xman_1365_x
پنج شنبه 02 دی 1389, 01:55 صبح
سورس كاملو بزار ببينم چه مشكلي داره

gryphon
پنج شنبه 02 دی 1389, 14:01 عصر
data segment
p1 db 4,3,8,6,7
ends

stack segment

ends

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


mov cx,5

lea si,p1
l1:

mov dl,[si]
add dl,48
mov ah,2
int 21h
mov dl,' '
mov ah,2
int 21h
inc si
loop l1

mov ah,8
int 21h








mov ax, 4c00h ; exit to operating system.
int 21h
ends

end start

xman_1365_x
پنج شنبه 02 دی 1389, 14:33 عصر
تست كردم،مشكلي نداره!

gryphon
پنج شنبه 02 دی 1389, 16:38 عصر
وقتی exe میکنم مشکل داره. انم یه نگاه بکنید.

; multi-segment executable file template.

data segment
p1 db 4,3,8,6,7
ends

stack segment
dw 128 dup(0)
ends

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


mov cx,5

lea si,p1
l1:

mov dl,[si]
add dl,48
mov ah,2
int 21h
mov dl,' '
mov ah,2
int 21h
inc si
loop l1
mov dh,2
mov dl,0
mov ah,2
int 10h

lea si,p1
mov cx,5
mov dl,[si]
l2:
mov bl,[si]
cmp bl,dl
jng l3
mov dl,bl
l3:
inc si
loop l2
add dl,48
mov ah,2
int 21h








mov ah,8
int 21h








mov ax, 4c00h ; exit to operating system.
int 21h
ends

end start ; set entry point and stop the assembler.

xman_1365_x
جمعه 03 دی 1389, 02:13 صبح
برنامه اول مشكلي نداره اين دومي چرا
الان اصلا وقتشو ندارم اما توش از وقفه جابجايي كرسر استفاده كردي و توي حلقه هم هست حتما همون كارو خراب كرده سعي خط بخط بري جلو ببيني صفحه جديد ايجاد نمي كني؟
شايد چاپ مي كني بعد آخركرسر ميره پيج بعد جديد ميشه هيچي نميبيني
نتونستي پيغام بزار وقت كنم ميام مشكلو مي گم

gryphon
جمعه 03 دی 1389, 13:22 عصر
درسته مشکل همینی هست که شما میگی، اما تو حلقه نیست.
int جابجایی رو برداشتم مشکل حل شد. اما بازم برام قابل درک نیست که چرا تو emu درست کار میکنه اما exe نه!!

xman_1365_x
جمعه 03 دی 1389, 14:35 عصر
كد هاتو دوباره ديدم،اول فكر كردم پيج رو دست ميزني توي حلقه بعد ديدم الان ديدم مشكل از اون نيست.
مشكل شما فقط بخاطر اينه اول برنامه مد صفحه رو ست نمي كني
براي همين در فايل اجرايي به مشكل ميخوري
هميشه بايد اين در شروع باشه تا تنظيم كني صفحه خروجي رو اگر نزاشتي به دردسر ميوفتي


; set video mode
mov ax, 3 ; text mode 80x25, 16 colors, 8 pages (ah=0, al=3)
int 10h ; do it!
شما هركدوم ار دو كد زير رو هم اول برنامه ميزاشتي مشكل حل ميشد
اگرچه كار خوبي نيست،بهترين روش همون اولي هست!


;set page,row,column=0 for begin in display
mov ah,2
mov bh,0 ;number of page 0..7
mov dh,0 ;number of row 0..79
mov dl,0 ;number of column 0..24
int 10h
يا


;clear screen
mov ah,00
mov al,03
int 10h