PDA

View Full Version : سوال: حرکت کردن متن خروجی در اسمبلی



hamid.v
جمعه 29 اردیبهشت 1391, 20:50 عصر
سلام
چطور میشه متن خروجی رو تو اسمبلی حرکت داد؟ مثلا از چپ به راست یا از بالا به پایین.

ssbostan
شنبه 30 اردیبهشت 1391, 09:55 صبح
سلام؛
اين كار رو ميشه به دو صورت انجام داد.
1-
به كمك تابع 02 از وقفه 10h، محل نشانه گر رو به محل دلخواه(بالا، پايين، چپ، راست) انتقال بديد.
با تابع 06 از وقفه 10h، صفحه رو اسكرول بديد تا خروجي از صفحه خارج شود.
خروجي رو مجددا چاپ كنيد.

2-
به صورت مستقيم خروجي رو در سگمنت text screen قرار بديد.
مانند يك آرايه، مقادير رو در حافظه به سمت مورد نظر شيفت بديد.

موفق باشيد.

hamid.v
شنبه 30 اردیبهشت 1391, 13:58 عصر
میشه با یک نمونه کد توضیح بدین! ممنون

ssbostan
شنبه 30 اردیبهشت 1391, 21:22 عصر
اينم يك مثال ساده، تركيبي از دو روش ذكر شده.





mov ax, 0b800h
mov ds, ax


mov di, 0
mov bp, 0

shift:

lea bx, msg
mov cx, 08h
mov si, 0

print_in_screen:

mov dl, es:[bx+si]
mov ds:[di], dl
add si, 1
add di, 2

loop print_in_screen

mov ds:[bp], 0
add bp, 02h
mov di, bp
jmp shift

msg db "ssbostan"





موفق باشيد.

Collector
دوشنبه 19 تیر 1391, 12:25 عصر
اينم يك مثال ساده، تركيبي از دو روش ذكر شده.





mov ax, 0b800h
mov ds, ax


mov di, 0
mov bp, 0

shift:

lea bx, msg
mov cx, 08h
mov si, 0

print_in_screen:

mov dl, es:[bx+si]
mov ds:[di], dl
add si, 1
add di, 2

loop print_in_screen

mov ds:[bp], 0
add bp, 02h
mov di, bp
jmp shift

msg db "ssbostan"





موفق باشيد.


این برنامه توی امولاتور اجرا میشه ولی وقتی کامپایل میکنم توی داس چیزی نشون نمیده

ssbostan
دوشنبه 19 تیر 1391, 18:52 عصر
با سلام؛
كاملا مشخص هست كه اجرا نميشه و نبايد هم اجرا بشه، چراكه ويندوز اجزا دسترسي به حافظه گرافيكي رو به برنامه هاي كاربر نميده.
ميتونيد برنامه رو در يك ماشين مجازي روي سيستم عامل dos تست كنيد.

موفق باشيد.