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

UptoLike

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

46
mov cx, 10
lea bx, CIFR ; адрес таблицы преобразования цифр в ASCII
xor si, si ; номер выводимой цифры
OUT: mov al, ‘0’
add ax, si ; ASCII код очередной цифры с номером в si
mov OUT_STR+2, al ; в буфер вывода
mov dl, COUNT[si] ; читать количество цифр с номером в si
mov al, dl
push cx ;временное сохранение cx
mov cl, 4 ; сдвиг на четыре
shr al, cl ; выделить старшую цифру
xlat ; ASCII старшей цифры в al
pop cx ; восстановление cx
mov OUT_STR+4, al ; в буфер вывода
mov al, dl ; восстановить количество цифр в
al
and al,00001111b ; выделить младшую цифру
xlat ; ASCII младшей цифры в al
mov OUT_STR+5, al ; в буфер вывода
lea dx, OUT_STR ; подготовка к выводу строки
mov ah, 09h ; номер функции
int 21h ; вывод строки
inc si ; Счетчик очередной цифры
loop OUT
QUIT: mov ax, 4C00h ; Код завершения 0
int 21h ; Выход в DOS
code ends
end START
 mov cx, 10
          lea bx, CIFR   ; адрес таблицы преобразования цифр в ASCII
          xor si, si     ; номер выводимой цифры
OUT:      mov al, ‘0’
          add ax, si     ; ASCII код очередной цифры с номером в si
          mov OUT_STR+2, al ; в буфер вывода
          mov dl, COUNT[si] ; читать количество цифр с номером в si
 mov al, dl
          push cx        ;временное сохранение cx
          mov cl, 4      ; сдвиг на четыре
          shr al, cl     ; выделить старшую цифру
          xlat           ; ASCII старшей цифры в al
          pop cx         ; восстановление cx
   mov OUT_STR+4, al ; в буфер вывода
          mov al, dl     ; восстановить количество цифр в al
          and al,00001111b ; выделить младшую цифру
          xlat           ; ASCII младшей цифры в al
 mov OUT_STR+5, al ; в буфер вывода
          lea dx, OUT_STR      ; подготовка к выводу строки
          mov ah, 09h    ; номер функции
          int 21h        ; вывод строки
          inc si         ; Счетчик очередной цифры
          loop OUT
QUIT:     mov ax, 4C00h ; Код завершения 0
          int 21h        ; Выход в DOS
 code ends
 end START


                                                                      46