Правильно задать буфер для ввода строки (02h) - Assembler
Формулировка задачи:
Объясните пожалуйста подробно почему объявление буфера имеет именно такой вид
buff db 255,?,255 dup(?)
, почему не buff db 30 dup (''), например?; masm dos com # .286 .model tiny .code org 100h start: mov ax,3 int 10h mov ah,9 mov dx,offset mes1 int 21h mov ah,0Ah mov dx,offset buff int 21h mov bh,0 mov bl,buff+1 mov buff[bx+2],'$' mov word ptr buff,' !' mov ah,9 mov dx,offset mes2 int 21h mov ah,0 int 16h ret mes1 db 'Как тебя зовут?',0Dh,0Ah,'$' mes2 db 0Dh,0Ah,'Привет' buff db 255,?,255 dup(?) end start
Решение задачи: «Правильно задать буфер для ввода строки (02h)»
textual
Листинг программы
mov [buff], byte 30 mov ah, 0Ah mov dx, offset buff+2 int 21h ; some code ... buff db 30 dup (?)
Объяснение кода листинга программы
На языке ассемблера AtomAssembler:
- mov [buff], byte 30 Описание: Задает байту по адресу [buff] значение 30. Значение: 30 Переменная: buff
- mov ah, 0Ah Описание: Задает регистру AH значение 0Ah. Значение: 0Ah Переменная: ah
- mov dx, offset buff+2 Описание: Задает регистру DX значение, равное смещению (offset) строки, следующему за последним байтом строки, с добавлением 2. Значение: offset buff+2 Переменная: dx
- int 21h Описание: Выполняет интерполяцию (попытку преобразования в число) строки, введенной пользователем, и сохраняет результат в памяти. Значение: Не определено Переменная: Не определена Примечание: В данном коде нет переменной, которая бы использовалась в качестве результата интерполяции, поэтому результат не сохраняется. Следует отметить, что данная последовательность команд предназначена для ввода строки с помощью функции 0Ah и сохранения этой строки в буфере, начальный адрес которого находится в регистре DX. buff db 30 dup (?) Значение: 30 Переменная: buff Описание: Задает начальный адрес буфера для ввода строки. Буфер имеет размер в 30 байтов и заполняется символами, введенными пользователем при вызове функции 0Ah.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д