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

UptoLike

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

45
IN_STR db 80, ?, 82 dup (?) ; буфер ввода
OUT_STR db 0Dh, 0Ah, ?,’-‘,?, ?,’$’ ; буфер вывода
data ends
code segment
assume cs:code, ds:data
START: mov ax, data
mov ds, ax ; Загрузить сегментный адрес данных
; Ввод строки
lea dx, IN_STR
mov ah, 0ah
int 21h
; Обработка
xor ah, ah ; обнуление старшего байта AX
lea bx, IN_STR+2 ; адрес начала введённой строки
xor cx, cx
mov cl, IN_STR+1 ; количество введенных символов
ВВ: mov al, [BX] ; очередной символ строки
cmp al,’0’ ; код символа меньше чем код нуля?
jb NC ; да, не цифра
cmp al, ‘9’ ; код символа больше чем код
девяти
ja NC ; да, не цифра
; символ - десятичная цифра
sub al, ‘0’ ; преобразуем ASCII код в число
mov si, ax ; индекс в массиве счетчиков COUNT
inc COUNT[si] ; увеличиваем счетчик цифр
NC: inc bx ; получить очередной символ строки
loop BB
; Вывод результатов
      IN_STR db 80, ?, 82 dup (?)       ; буфер ввода
      OUT_STR db 0Dh, 0Ah, ?,’-‘,?, ?,’$’ ; буфер вывода
      data ends
      code segment
      assume cs:code, ds:data
START:       mov ax, data
             mov ds, ax      ; Загрузить сегментный адрес данных
      ; Ввод строки
 lea dx, IN_STR
 mov ah, 0ah
 int 21h
      ; Обработка
             xor ah, ah      ; обнуление старшего байта AX
             lea bx, IN_STR+2 ; адрес начала введённой строки
             xor cx, cx
             mov cl, IN_STR+1 ; количество введенных символов
ВВ:          mov al, [BX]    ; очередной символ строки
             cmp al,’0’      ; код символа меньше чем код нуля?
             jb NC           ; да, не цифра
             cmp al, ‘9’     ; код символа больше чем код девяти
             ja NC           ; да, не цифра
      ; символ - десятичная цифра
             sub al, ‘0’     ; преобразуем ASCII код в число
             mov si, ax      ; индекс в массиве счетчиков COUNT
             inc COUNT[si]   ; увеличиваем счетчик цифр
NC:          inc bx          ; получить очередной символ строки
             loop BB
 ; Вывод результатов
                                                                   45