PDA

Просмотр полной версии : посмотрите please



john_1
27.12.2006, 20:43
написать программу,использующую процедуру вычисления двоичного представления числа S=0+1/5^1+1/5^2+1/5^3+...+1/5^N (n=8,10,20)
в вычисленияхудерживать 200 двоичных цифр.вывести на печаит первые 100 двоичных цифр.для организации вывода символов двоичных цифр использовать сдвиги бит
есть вопрос по выводу на экран


model tiny
masm
.386
.data
s db 42 dup(?) ;результат
a db 42 dup(?) ;определение временного массива
long dd 1 ; делимое
pr_numb db 10 dup(?)
ln_s=$-s

.code
assume cs:@code,ds:@code,es:@code,ss:@code
org 100h


begin:
mov cx,42
mov si,offset s ; результат
mov di,offset a ; временный массив
; dx=0001h, старшая часть
mov dx, word ptr long ; делимого
; ax=0000h , младшая часть
; делимого
mov bx,5
xor ax,ax
push ds
pop es

divide: ; заполнение начального значения суммы
div bx ;s=s/n
mov [si],ax ;s---->()()()()
inc si
inc si
mov ax,[si]
loop divide

;================================================= ===

==========
;---------------
mov ax,[si-2]
;--------------

mov si,offset s
mov di,offset a
push di
cld
mov cx,21
rep movsw
pop si
mov cx,42

tell:
push cx
mov edx,0
mov cx,1
double:
mov ax, [si] ; s1:=s1\n
div bx
mov [si],ax
inc si
inc si
loop double

stc ;устанавливаем CF=1
dec si
dec si
mov di,offset a
add di,ln_s-2
clc



mov cx,42
@label:
mov ax,[di] ;сложение [di]+[si]
adc ax,[si]
mov [si],ax
dec si
dec si
dec di
dec di
loop @label
pop cx
; loop tell
;----------------------------

;-------------------------------


end begin

Хыиуду
28.12.2006, 10:23
есть вопрос по выводу на экран

И в чем состоит вопрос? :)
Кстати: называйте темы осмысленно!

john_1
28.12.2006, 12:04
где ошибка и как вывести в двоичной форме
вот наброски есть:


Output proc near ; Вывод на экран в двоичной форме
mov si,offset s
clc
mov cx,100 ; сколько байт выводить
@h:
mov al,[si]
push cx
mov cx,1
mov ah,02
@w:
rcl al,1
jc w0
mov dl,'0' ; печать '0'
int 21h
jmp short w1
w0:
mov dl,'1'
int 21h ; печать '1'
w1:
loop @w
inc si
pop cx
loop @h
Output endp