посмотрите please

За вознаграждение или нахаляву (если повезёт)

Модераторы: Хыиуду, dr.Jekill, MOTOCoder, Medved

Ответить
john_1
Сообщения: 19
Зарегистрирован: 16 ноя 2006, 07:18

27 дек 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
Хыиуду
Сообщения: 2388
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

28 дек 2006, 10:23

john_1 писал(а):есть вопрос по выводу на экран
И в чем состоит вопрос? :)
Кстати: называйте темы осмысленно!
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
john_1
Сообщения: 19
Зарегистрирован: 16 ноя 2006, 07:18

28 дек 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
Ответить