Разбираю у Абеля вопросы, споткнулся на таком: Я написал нижеследующее: (сразу попрошу - пожалуйста, не критикуйте код, тем более код неофита! я специально не стал организовывать цикл, юзать стек и т.д. - все предельно тупо и просто, для наибольшей наглядности - ибо мне нужен конкретный ответ на конкретный вопрос, а не дискуссия о наглядности/оптимизации/кол-ве кода/гуанкода .) итак: Код (Text): A 100 ;FIRST SYMBOL MOV AH, 10 INT 16 MOV [200], AL XOR AX, AX ;SECOND SYMBOL MOV AH, 10 INT 16 MOV [201], AL XOR AX, AX ;THIRD SYMBOL MOV AH, 10 INT 16 MOV [202], AL XOR AX, AX ;DISPLAY MOV AH, 09 MOV DX, 200 INT 21 ;ограничитель $ должен быть скорее всего тут JMP 100. Собственно программа работает отлично - выполняю в DEBUG, инструкции трассирую (T), прерывания выполняю (P), в конце программа выводит кучу символов, из них первые 3 - это те самые которые ввожу я. И вопрос: куда поставить ограничитель $ в приведенном выше листинге, чтобы программа выводила только 3 введенных мною символа ? И еще вопрос: что значат слова Абеля: используйте команду Е 123 $ для установки ограничителя $ после 3-х введенных символов ?
насколько я понимаю $ нужно поместить с помощью команды E адрес по смещению 203h Для того чтоб функция 9 int21h знала где кончается строка, а 123 - опечатка
Rockphorr Спасибо, все так и есть. 123 опечатка и есть, а $ нужно было втулить в [203]. Единственное что я изменил - это юзал не Е, а ассемблерную инструкцию MOV BYTE PTR [203], 24 ; где 24 - ASCII-код символа $.
Собственно программа стала выглядеть так: Код (Text): A 100 ;FIRST SYMBOL MOV AH, 10 INT 16 MOV [200], AL XOR AX, AX ;SECOND SYMBOL MOV AH, 10 INT 16 MOV [201], AL XOR AX, AX ;THIRD SYMBOL MOV AH, 10 INT 16 MOV [202], AL XOR AX, AX ;DISPLAY MOV AH, 09 MOV DX, 200 MOV BYTE PTR [203], 24 INT 21 JMP 100