مهندس -نرم افزار
جمعه 11 دی 1394, 15:48 عصر
سوال استاد زبان ماشین ما این بود که یک رشته رو از ورودی دریافت کنیم و اون رشته 30 کارکتری رو دقیقا وسط صفحه چاپ کنیم چه اون رشته سه کاراکتر داشته باشه وسط صفحه باشه چه 30 کارکتر داشته باشه وسط صفحه باشه و گفته ما باید طول رشته رو دریافت کنیم تقسیم به دو کنیم و اون رو در وسط صفحه قرار دهیم حالا من این کد رو نوشتم ولی اصلن جواب نمیده میشه کمکم کنید؟
++++++++++++++++++++++++++++++
این قسمت صفحه پاک میکنه
mov ah,06h
mov bh,00001111b
mov al,00h
mov cl,00h
mov ch,00h
mov dh,24
mov dl,79
int 10h
;----------;
این قسمت کارکتر دریافت و چاپ میکنه
mov ah,0ah
lea dx,str
int 21h
mov ah,09
lea dx,si
int 10h
;----------;
این قسمت طول رشته دریافتی رو گرفته و تقسیم بر دو میکنه
lea si,str
inc si
mov cl,[si]
mov al,2
sub ah,ah
div cl
inc si
این قسمت مکان نما رو به محل مورد نظر میبره
mov ah,02
mov bh,00h
mov dh,12
mov dl,40
sub dl,al
int 10h
که مشکل من توی همین قسمت بالایی هستش از جایی که طول رشته رو میگیره تا مکان نما رو به محل مورد نظر میبره
;----------;
add si,cx
mov [si],"$"
inc si
mov ah,09
lea dx,str
add dx,2
int 21h
;----------;
mov dh,0
mov ah,4ch
int 21h
str db 31,?,31 dup(?)
s db "enter:$"
ممنون میشم اگه بتونیم هر چه زودتر مشکلم رو بهم بگید حداقل تا قبل از دوشنبه 14 دی ماه با ذکر اینکه ما همه وقفه رو یاد نگرفتیم و تعداد معدودی از وقفها مثل پاک کردن صفحه 06 وقفه 10h و تغییر محل ماکان نما 02 وقفه 10hو نمایش کاراکتر 02وقفه 21hو دریافت کاراکتر 01 وقفه 21hو نمایش یک رشته 09 وقفه 21hو دریافت یک رشتهاز صفحه کلید وقفه 21h0Aووقفه تشخیص فشرده شدن یا نشدن کلید 01 وقفه 16hو وقفه تشخیص کلید فشرده شده 00hوقفه 16h
++++++++++++++++++++++++++++++
این قسمت صفحه پاک میکنه
mov ah,06h
mov bh,00001111b
mov al,00h
mov cl,00h
mov ch,00h
mov dh,24
mov dl,79
int 10h
;----------;
این قسمت کارکتر دریافت و چاپ میکنه
mov ah,0ah
lea dx,str
int 21h
mov ah,09
lea dx,si
int 10h
;----------;
این قسمت طول رشته دریافتی رو گرفته و تقسیم بر دو میکنه
lea si,str
inc si
mov cl,[si]
mov al,2
sub ah,ah
div cl
inc si
این قسمت مکان نما رو به محل مورد نظر میبره
mov ah,02
mov bh,00h
mov dh,12
mov dl,40
sub dl,al
int 10h
که مشکل من توی همین قسمت بالایی هستش از جایی که طول رشته رو میگیره تا مکان نما رو به محل مورد نظر میبره
;----------;
add si,cx
mov [si],"$"
inc si
mov ah,09
lea dx,str
add dx,2
int 21h
;----------;
mov dh,0
mov ah,4ch
int 21h
str db 31,?,31 dup(?)
s db "enter:$"
ممنون میشم اگه بتونیم هر چه زودتر مشکلم رو بهم بگید حداقل تا قبل از دوشنبه 14 دی ماه با ذکر اینکه ما همه وقفه رو یاد نگرفتیم و تعداد معدودی از وقفها مثل پاک کردن صفحه 06 وقفه 10h و تغییر محل ماکان نما 02 وقفه 10hو نمایش کاراکتر 02وقفه 21hو دریافت کاراکتر 01 وقفه 21hو نمایش یک رشته 09 وقفه 21hو دریافت یک رشتهاز صفحه کلید وقفه 21h0Aووقفه تشخیص فشرده شدن یا نشدن کلید 01 وقفه 16hو وقفه تشخیص کلید فشرده شده 00hوقفه 16h