ВУЗ:
Составители:
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
Страницы
- « первая
- ‹ предыдущая
- …
- 29
- 30
- 31
- 32
- 33
- …
- следующая ›
- последняя »
