ВУЗ:
Составители:
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
- …
- следующая ›
- последняя »