Записать вводимое значение с клавиатуры/из регистра в переменную - Assembler

Узнай цену своей работы

Формулировка задачи:

Как записать вводимое значение с клавиатуры в переменную( tasm)? как записать значение из регистра в переменную(tasm)?

Решение задачи: «Записать вводимое значение с клавиатуры/из регистра в переменную»

textual
Листинг программы
;-------------------------------------------------------------------------
InInt   proc near        ; процедура интерпретации знаковых целых чисел
                              ; параметры: si - смещение буфера 
                              ; результат возвращается в регистре ax
;-------------------------------------------------------------------------
        push cx
        push dx
        push bx
        push si
        push di
 
; обрабатываем содержимое буфера
 
        cmp byte ptr [si],"-" ; если первый символ минус
        jnz ii1
        mov di,1              ; устанавливаем флаг
        inc si                ; и пропускаем его
ii1:
        xor ax,ax
        mov bx,10             ; основание системы счичления
ii2:
        mov cl,[si]           ; берем символ из буфера
        cmp cl,0dh            ; это замыкающий 0?
        jz endin              ; завершаем разбор числа
        
; если это не замыкающий 0, то проверяем его на правильность
 
        cmp cl,'0'            ; символ < 0
        jl endin                  
        cmp cl,'9'            ; символ > 9
        ja endin              ; на этом разбор числа заканчивается
 
        sub cl,'0'            ; делаем из символа число 
        mul bx                ; умножаем на 10
        add ax,cx             ; прибавляем к остальным
        inc si                ; указатель на следующий символ
        jmp ii2               ; повторяем
 
; все символы из буфера обработаны число находится в ax
 
endin:
        cmp di,1              ; если установлен флаг, то
        jnz ii3
        neg ax                ; делаем число отрицательным
ii3:
        pop di
        pop si
        pop bx
        pop dx
        pop cx
        ret
InInt   endp 
;-------------------------------------------------------------------------

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

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