Программирование на Ассемблере для персональных компьютеров. Садовой Н.Н - 58 стр.

UptoLike

Составители: 

58
; Схема преобразования десятичного числа а2а1а0 в 16-ричную СС
по ;схеме Горнера - N16=(a2*A+a1)*A+a0 , где A десятичное осно-
вание
VAL proc near
push bx ; сохранение
push cx ; регистров
push dx ; в стеке
lea bx, N_INPBUF ; адрес начала числа
mov cl, N_FACTLEN ; фактическая длина числа
xor ch, ch ; расширить до сх
xor ax, ax
mov dl, 10 ; основание системы счисления
VAL1: imul dl ; умножаем на основание
mov dh, [bx]
sub dh, "0" ; преобразуем его в цифру
add al, DH ; добавляем к результату
inc bx ; на следующий символ
loop VAL1
cmp ax, 255
clc ;сброс флага CF
jle VAL2
stc ; если результат больше 255 установить флаг CF=1
VAL2: pop dx ; восстановить
pop cx ; регистры
pop bx ; из стека
ret
VAL endp
; Подпрограмма удаления подстроки
        ; Схема преобразования десятичного числа а2а1а0 в 16-ричную СС
         по ;схеме Горнера - N16=(a2*A+a1)*A+a0 , где A десятичное осно-
         вание
   VAL      proc             near
            push bx                      ; сохранение
            push cx                      ; регистров
            push dx                      ; в стеке
            lea    bx, N_INPBUF          ; адрес начала числа
            mov cl, N_FACTLEN ; фактическая длина числа
            xor    ch, ch                ; расширить до сх
            xor    ax, ax
            mov dl, 10                   ; основание системы счисления
VAL1:       imul dl                      ; умножаем на основание
            mov dh, [bx]
            sub    dh, "0"          ; преобразуем его в цифру

            add al, DH                   ; добавляем к результату
            inc    bx                     ; на следующий символ
            loop VAL1
            cmp ax, 255
            clc                          ;сброс флага CF
            jle    VAL2
            stc               ; если результат больше 255 установить флаг CF=1
VAL2:       pop dx                       ; восстановить
            pop cx                       ; регистры
            pop bx                       ; из стека
            ret
   VAL      endp
        ; Подпрограмма удаления подстроки
                                                                            58