Какая польза от Mov ах, 10 в int 21h - PullRequest
       49

Какая польза от Mov ах, 10 в int 21h

0 голосов
/ 28 сентября 2019

Какая польза от mov ah,10 в int 21h

В основном мы используем как mov ah,0a для ввода строки, но почему mov ах, 10?

nter db 'enter you name:$'
nam db 50,0,50 dup('$')     ;num is 50, num + 1 is 0, num + 2 is 50
lfcr db 10,13,'$'           ;line feed carrier return/next line carriage return
.code
main proc 
    mov ax,@data            ;define
    mov ds,ax
    mov ah,9                
    lea dx,nter             ;output nter
    int 21h
    mov ah,10
    lea dx,nam
    int 21h

Ответы [ 3 ]

2 голосов
/ 28 сентября 2019

В основном мы используем как mov ah, 0a для ввода строки, но почему mov ah, 10?

Вы можете использовать десятичную дробь, если хотите;но большинство (все?) справочных материалов для функций DOS показывают значения (для номеров функций, номеров прерываний и адресов) в шестнадцатеричном формате, и другие программисты с большей вероятностью распознают шестнадцатеричные значения;поэтому использование десятичной дроби усложнит чтение.

Другой альтернативой является использование препроцессора, например, "#define BUFFERED_INPUT_FUNCTION_NUMBER 0x0A" и "mov ah,BUFFERED_INPUT_FUNCTION_NUMBER".Для людей, которые не очень знакомы с DOS, это облегчает чтение (и / или устраняет необходимость в комментариях);но для людей, хорошо знакомых с DOS, это делает его немного хуже (чтобы проверить, действительно ли используется правильный номер, нужно проверить 2 разных места вместо одного).

0 голосов
/ 28 сентября 2019

0a - это шестнадцатеричное число, представляющее 10 в десятичном числе.

Если вы знакомы с nasm синтаксисом ассемблера, 0a - это \n или символ новой строки.

0 голосов
/ 28 сентября 2019

явно похищен из эта таблица прерываний DOS .

Чтение ввода buffererd

DS:DX = буфер

byte [ds:DX] = длина буфера
byte [ds:DX + 1] (входной) = количество символов в буфере, которое можно вызвать
(выходной) = количество символов в буфере

буфер начинается с DS:DX + 2

10 совпадает с 0Ah

...