.MODEL small
.STACK 200h
.DATA
StringBuffer DB 80, ?, 81 dup (?)
.CODE
ProgramStart: mov ax, @DATA
mov ds, ax
mov ah, 0Fh ;определение номера текущего видеорежима
int 10h
mov ah, 00h ;устанавливание видеорежима с тем же номером как и текущий
int 10h
mov ah, 0ah ;запрашивание у пользователя строки
int 21h
mov ah, 0Fh ;очистка экрана
int 10h
mov ah, 00h
int 10h
mov ax, 80 ;координата X для выводимой строки – x =(80-L)/2
sub AL, StringBuffer[1]
mov bl, 2
div BL
mov ah, 02h ;перемещение курсора в выбранную позицию на экране
int 10h
mov bh, 0
mov bl, StringBuffer[1] ;ограничительный символ $ поместить в конец введенной строки
mov bh, 0
add bx, 2
mov StringBuffer[BX], '$'
mov ah, 09h ;вывод строки на экран
int 21h
mov ah, 0 ;пауза до нажатия любой клавиши
int 16h
mov ah, 4Ch ;завершение работы программы
int 21h
END ProgramStart
Как убрать мусор до строки
Здравствуйте! Я только начала изучать ассемблер, использую компилятор Tasm (настоятельно рекомедовал преподаватель). Попыталась сделать задание: "запросить с клавиатуры строку символов (не более 80 символов) и вывести ее в центе экрана (y = 13, x = (80 – L)/2, где L – количество символов в строке) ", но до строки выводит еще кучу всяких символов=( Подскажите, пожалуйста, что нужно исправить, чтобы программа работала корректно.
Извините за беспокойство, нашла свою ошибку
У тебе есть *.bat файл для компиляции твоих програм на TASM. Что у тебя там написано?
например У меняв MASM32
d:\masm32\bin\ml.exe /c /coff D:\win32asm\CONTROLS\1.asm
d:\masm32\bin\link16.exe D:\win32asm\CONTROLS\1.obj ,,NUL,,,
exe2bin 1.exe 1.com
pause
да И какая версия у тебя?
tlink m.obj (для exe)
tlink /t m.obj (для com, для соm должна быть .model tiny)
для dos и масма /coff не нужен
Пасиб