Вычисление дробей с высокой точностью - Assembler
Формулировка задачи:
не могу понять что не так...показывает синт. ошибку pascal строка 42!!! посмотри пожалуйста может кто найдет ответ что же не так тут:
.model tiny .386 .code assume cs:@code, ds:@code, es:@code, ss:@code org 100h START: mov cl, 42 mov si, offset s mov ah, 1 xor al, al mov bl, 207 push ds pop es divide: div bl mov [si], al inc si xor al, al loop divide dec si std mov bl, 100 mov cl, 50 m1: push si push cx mov cx, 42 mov di, si clc xor bh, bh to10: mov al, es:[di] pushf mul bl popf adc al, bh stosb mov bh, ah loop to10 adc ah, 0 movzx edx, ah call print10_pl pascal ,edx, offset pr_numb, word ptr 1, \ word ptr 1, word ptr 1, word ptr 8 pop cx pop si dec cx jcxz m2 jmp short m1 m2: mov ah,0 int 16h mov ah, 4ch int 21h ;__________________________________________________________________ s db 42 dup(?) pr_numb db 10 dup(?) ;__________________________________________________________________ print10_pl proc near beg word(0) zero word(0) f_handle word(0) pp0 word(0) num_off word(0) numb dword(0) args_size dword(0) push eax push bp mov bp, sp push eax push ebx push cx push edx push si mov cx, 10 mov si, num_off push cx @p: mov byte ptr [si], '0' inc si loop @p pop cx mov eax, numb mov si, num_off add si, 9 mov ebx, 10 @@pr: mov edx, 0 div ebx add dl, '0' mov byte ptr [si], dl or eax, eax jz short @@pr2 dec si loop @@pr @@pr2: cmp pp0, 0 je @@e6 mov ah, 40h mov cx, 10 mov dx, offset num_off mov bx, 1 cmp pp0,2 je @@e1 jmp short @@e2 @@e1: mov bx, f_handle @@e2: cmp zero,0 jne short @@e3 add cx, dx sub cx, si mov dx, si jmp short @@e4 @@e3: sub cx, beg add dx, beg @@e4: int 21h @@e6: pop si pop edx pop cx pop ebx pop eax mov sp, bp pop bp ret print10_pl endp end START
Решение задачи: «Вычисление дробей с высокой точностью»
textual
Листинг программы
; masm dos com # .model tiny .286 .code .386 org 100h START: mov cl, 42 mov si, offset s mov ah, 1 xor al, al mov bl, 207 push ds pop es divide: div bl mov [si], al inc si xor al, al loop divide dec si std mov bl, 100 mov cl, 50 m1: push si push cx mov cx, 42 mov di, si clc xor bh, bh to10: mov al, es:[di] pushf mul bl popf adc al, bh stosb mov bh, ah loop to10 adc ah, 0 movzx edx, ah push 8 push 1 push 1 push 1 push offset pr_numb push edx call print10_pl pop cx pop si dec cx jcxz m2 jmp short m1 m2: mov ah,0 int 16h mov ah, 4ch int 21h ;<br> <br> s db 42 dup(?) pr_numb db 10 dup(?) ;<br> <br> print10_pl proc near pascal beg:word,zero:word,f_handle:word,pp0:word,\ num_off:word,numb:dword,args_size:dword push eax push eax push ebx push cx push edx push si mov cx, 10 mov si, num_off push cx @p: mov byte ptr [si], '0' inc si loop @p pop cx mov eax, numb mov si, num_off add si, 9 mov ebx, 10 @@pr: mov edx, 0 div ebx add dl, '0' mov byte ptr [si], dl or eax, eax jz short @@pr2 dec si loop @@pr @@pr2: cmp pp0, 0 je @@e6 mov ah, 40h mov cx, 10 lea dx,num_off mov bx, 1 cmp pp0,2 je @@e1 jmp short @@e2 @@e1: mov bx, f_handle @@e2: cmp zero,0 jne short @@e3 add cx, dx sub cx, si mov dx, si jmp short @@e4 @@e3: sub cx, beg add dx, beg ;@@e3: sub cx, beg add dx, beg @@e4: int 21h @@e6: pop si pop edx pop cx pop ebx pop eax ret print10_pl endp end START
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д