Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Помогите найти ошибку в программе на ассемблере!

62K
30 сентября 2010 года
mdh-person
3 / / 30.09.2010
Программа инициализирует посимвольный ввод с клавиатуры. Она записывает в регистр символ если он не Enter, в ином случае мы выходим с цикла и переводим каретку и на новую строку, выводим вводимое слово, выводим слово, которое было присвоенно переменной в начале программы

Но, когда выводит результат, то до ожидаемого результата выводит море "мусора".:confused:

Заранее благодарю!

Вот код:
 
Код:
 
CODE_SEG SEGMENT
ASSUME CS:CODE_SEG, DS:CODE_SEG, SS:CODE_SEG, ES:CODE_SEG
ORG 100h
START_:
JMP BEG_
S0 DB " world$"
S1 DB '$'
S2 DB 0AH, 0DH,'$'

NEW_PROC PROC NEAR
BEG_:
xor Si, Si

lbl0:

MOV AH, 01H
LEA DX, S1
INT 21h

Cmp AL, 0DH
jz lbl1
mov S1[Si], AL
inc Si
jmp lbl0

lbl1:

LEA DX, S2
MOV AH, 09h
INT 21h

mov S1[Si], '$'

LEA DX, S1
MOV AH, 09h
INT 21h

LEA DX, S0
MOV AH, 09h
INT 21h

RET
NEW_PROC ENDP
CODE_SEG ENDS
END START_
14K
01 октября 2010 года
shoorick
48 / / 07.06.2006
для этих целей служит отладчик, а также для задавания вопроса желательны коменты или хотя бы намеки что где зачем.

ты же символы с клавы читаешь в S1+si, а где ж там место? напиши в строчке S1 типа 32 dup ("$"), а для полного счастья можно контролировать si, чтобы оно не превысило 30 (нужно ж место для доллара оставить)
62K
01 октября 2010 года
mdh-person
3 / / 30.09.2010
Да, спасибо! Я уже решил проблему.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог