Правильно задать буфер для ввода строки (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:

  1. mov [buff], byte 30 Описание: Задает байту по адресу [buff] значение 30. Значение: 30 Переменная: buff
  2. mov ah, 0Ah Описание: Задает регистру AH значение 0Ah. Значение: 0Ah Переменная: ah
  3. mov dx, offset buff+2 Описание: Задает регистру DX значение, равное смещению (offset) строки, следующему за последним байтом строки, с добавлением 2. Значение: offset buff+2 Переменная: dx
  4. int 21h Описание: Выполняет интерполяцию (попытку преобразования в число) строки, введенной пользователем, и сохраняет результат в памяти. Значение: Не определено Переменная: Не определена Примечание: В данном коде нет переменной, которая бы использовалась в качестве результата интерполяции, поэтому результат не сохраняется. Следует отметить, что данная последовательность команд предназначена для ввода строки с помощью функции 0Ah и сохранения этой строки в буфере, начальный адрес которого находится в регистре DX. buff db 30 dup (?) Значение: 30 Переменная: buff Описание: Задает начальный адрес буфера для ввода строки. Буфер имеет размер в 30 байтов и заполняется символами, введенными пользователем при вызове функции 0Ah.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.556 из 5
Похожие ответы