Архитектура микропроцессоров и их программирование. Карягин А.П. - 31 стр.

UptoLike

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

31
С помощью следующих ассемблерных команд можно выполнять ариф-
метические операции непосредственно над числами в ASCII-формате:
AAA - коррекция для сложения;
AAD - коррекция для деления;
AAM - коррекция для умножения;
AAS - коррекция для вычитания.
3.2.3 Пример выполнения арифметической операции
В приведенном ниже примере суммируются два символьных числа
(ASCII-код) по следующему алгоритму:
- адреса последних символов (8 и 6) слагаемых запоминаются в реги-
страх SI и DI,а суммы - в BX;
- производят их суммирование в аккумуляторе AL(команда ADC );
- при помощи команды AAA преобразовывают сумму в формат BCD и
прибавляют к AL код 30h c целью получения ASCII-кода последнего символа
суммы;
- после изменения адресов символов слагаемых (DEC SI и DEC DI)
цикл повторяют(команда LOOP <метка>).
Пример 3.1 Составить программу сложения двузначных символьных
чисел, используя информацию пункта 3.2.2 и описанный выше алгоритм.
title summa(exe)
stsg segment stack 'stack'
dw 32 dup (?)
stsg ends
;----------------------------------------------
datasg segment para 'data'
asc1 db '78'
asc2 db '96'
asc3 db '000','$'
datasg ends
;---------------------------------------------
codesg segment para 'code'
begin proc near
assume cs:codesg,ds:datasg,
ss:stsg,es:datasg
push ds
sub ax,ax
push ax
mov ax,datasg
mov ds,ax
mov es,ax
clc
lea si,asc1+1
      С помощью следующих ассемблерных команд можно выполнять ариф-
метические операции непосредственно над числами в ASCII-формате:
      AAA - коррекция для сложения;
      AAD - коррекция для деления;
      AAM - коррекция для умножения;
      AAS - коррекция для вычитания.

     3.2.3 Пример выполнения арифметической операции

       В приведенном ниже примере суммируются два символьных числа
(ASCII-код) по следующему алгоритму:
       - адреса последних символов (8 и 6) слагаемых запоминаются в реги-
страх SI и DI,а суммы - в BX;
       - производят их суммирование в аккумуляторе AL(команда ADC );
       - при помощи команды AAA преобразовывают сумму в формат BCD и
прибавляют к AL код 30h c целью получения ASCII-кода последнего символа
суммы;
       - после изменения адресов символов слагаемых (DEC SI и DEC DI)
цикл повторяют(команда LOOP <метка>).

       Пример 3.1 Составить программу сложения двузначных символьных
чисел, используя информацию пункта 3.2.2 и описанный выше алгоритм.
       title summa(exe)
       stsg segment stack 'stack'
              dw 32 dup (?)
       stsg ends
       ;----------------------------------------------
       datasg segment para 'data'
       asc1 db '78'
       asc2 db '96'
       asc3 db '000','$'
       datasg ends
       ;---------------------------------------------
       codesg segment para 'code'
       begin proc near
       assume cs:codesg,ds:datasg,
       ss:stsg,es:datasg
             push ds
       sub ax,ax
             push ax
             mov ax,datasg
             mov ds,ax
             mov es,ax
             clc
             lea si,asc1+1
                                                                       31