Вычитание 20-значных чисел - Assembler
Формулировка задачи:
Помогите,пожалуйста.
Задача: ввести два 20-значных числа,вычесть,используя AAA,DAS,AAS или DAA,и вывести на экран. (в программе использовать процедуру).
Буду ооочень благодарна.
Решение задачи: «Вычитание 20-значных чисел»
textual
Листинг программы
LOCALS .model small .stack 100h .data MaxLen equ 20 First db MaxLen dup(0) Second db MaxLen dup(0) Third db MaxLen dup(0) Asciiz1 db '9876543210', 0 Asciiz2 db '1234567890', 0 .code ;переводит ASCIIZ строку в длинное число формата BCD ;вход ; ds:si - ASCIIZ строка ;выход ; ds:di - длинное число формата BCD little-endian AsciizToBcd proc push ax push bx push cx push dx push si push di mov cx, 0 @@ScanEndOfStr: mov al, [si] test al, al jz @@Break inc si inc cx jmp @@ScanEndOfStr @@Break: jcxz @@Zero dec si @@Convert: mov al, [si] sub al, '0' mov [di], al inc di dec si loop @@Convert @@Zero: pop di pop si pop dx pop cx pop bx pop ax ret AsciizToBcd endp ;Показать длинное BCD на экран ;вход ; ds:si - начало числа ShowBcd proc push ax push bx push cx push dx push si push di mov cx, MaxLen add si, cx dec si @@SkipLeadingZero: mov al, [si] test al, al jnz @@Write dec si loop @@SkipLeadingZero @@Write: mov al, [si] add al, '0' int 29h dec si loop @@Write pop di pop si pop dx pop cx pop bx pop ax ret ShowBcd endp ;Вычитанеи длинных BCD ;вход ; si - уменьшаемое ; di - вычитаемое ;выход ; bx - разность SubBcd proc push ax push bx push cx push dx push si push di mov cx, MaxLen mov ah, [si] @@SubLoop: mov al, ah mov ah, [si+1] sub al, [di] aas mov [bx], al inc si inc di inc bx loop @@SubLoop pop di pop si pop dx pop cx pop bx pop ax ret SubBcd endp main proc mov ax, @data mov ds, ax lea si, Asciiz1 lea di, First call AsciizToBcd lea si, First call ShowBcd mov al, 13 int 29h mov al, 10 int 29h lea si, Asciiz2 lea di, Second call AsciizToBcd lea si, Second call ShowBcd mov al, 13 int 29h mov al, 10 int 29h lea si, First lea di, Second lea bx, Third call SubBcd lea si, Third call ShowBcd mov ax, 4C00h int 21h main endp end main
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д