Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Наибольший общий делитель файлы, паредактировать 
:(
    Опции темы
ddj
Дата 5.11.2008, 22:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 106
Регистрация: 26.2.2008

Репутация: нет
Всего: 1



Доброе время суток, обрасчаюсь к вам с маленкой просьбой : 
программа считает нод(Наибольший общий делитель) двух цифр 
(цифры считывает с двух файлов, одну цыфру с одного, другую с другово)
результат в третим файле.
*Нп: 1.тхт: 2465789541567
      2.тхт: 846873246285
   rez.тхт: 33
* в файле могут быть разные цифры, необизательно эти.Тут как пример

Код

.model small
.stack 100h
.data


    input1    DB    255 DUP (0)
    input2    DB    255 DUP (0)
    output    DB    255 DUP (0)    
    handleIn1 DW ?
    handleIn2 DW ?
    handleOut DW ?

    buffer    DB 20 DUP (0)
    buffer2   DB 20 DUP (0)

        error     db "File not find", 0
        error1    db "ERROR cant creat file", 0
        error2    db "data error",0
        msg       db ' ______________________________________________________________________ ',13, 10
                  db '/                    xx                                                                                                                       \',13, 10
                  db '| x                                                                                                                                            |',13, 10
                  db '|     fxx                                                                                                                                     |',13, 10
                  db '|                                                                                                                                               |',13, 10
                  db '|  prm.: 1.txt: 2465789541567, 2.txt: 846873246285                                                             |',13, 10
                  db '|                       Rez.txt: 33                                                                                                       |',13, 10
                  db '\----------------------------------------------------------------------/$'


.code
 
 
pradzia:  ; start
        mov ax, @data
        mov ds, ax 

;************************************************
write MACRO ka
        LOCAL writeNextSymb, wroteIt    ;makro - not "duplicate declaration"
        PUSH dx
        PUSH cx
        PUSH ax
        PUSH bx
        PUSH si
 
        MOV    bx, 1                ; na ekran
        MOV    cx, 1                
 
        MOV    si, 0                ;nachalo
 
        writeNextSymb:
            MOV    al, [ka + si]        ;kokj sledushij simvol
            CMP    al, 0                ;0 - konec
            JE    wroteIt
            MOV    dx, offset ka        ;nachalo predlazhenija
            ADD    dx, si                ;bukva
            MOV    ah, 40h
            INT    21h                 ;zapisyvaem
            INC    si
        JMP    writeNextSymb
        wroteIt:
 
        POP si
        POP    bx
        POP    ax
        POP    cx
        POP    dx        
    ENDM
;******************************************************
 

;-------------------------------------------------
radom:
        mov ah, 9
        mov dx, offset msg
        int 21h
        call pabaiga



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




;----create rez file---- 
;        mov ah, 3Ch     ;DOS create file
;        mov cx, 0       ;attribute
;        lea dx, output  ;filename in ASCIIZ
;        int 21h
;        call flagCheck

;----> otkryvaem 2 fajla <-----

    MOV    al, 0                    ;schityvaem
    MOV    dx, offset input1        ;nzv fajla 
    MOV    ah, 3dh
    INT    21h                      ;otkryvaem
    JNC    fileOpened1

        CALL errInFileOpening       ;vykidyvaem error

    fileOpened1:
    MOV    handleIn1, ax            ;save
 
    MOV    al, 0                    
    MOV    dx, offset input2        ;otkryvaem vtoroj
    MOV    ah, 3dh
    INT    21h                    
    JNC    fileOpened2

        CALL errInFileOpening       ;kidaem error na monitor

    fileOpened2:
    MOV    handleIn2, ax            ;save
 
;---> delajem rez.txt (rez.txt) <---

    MOV    cx, 0                    ;filetype = normal
    MOV    dx, offset output        ;nzw fajla
    MOV    ah, 3ch
    INT    21h                      ;tvorim fajl
    JNC    fileCreated
        CALL errorCreatingFile
    fileCreated:
    MOV    handleOut, ax            ;save
 


;---------------------
 terminate PROC
        MOV ax, 4C00h
        INT 21h
    terminate ENDP
;---------------------

; --> ERRORS :

;--------------------------------------------------------
  errInFileOpening PROC

        write error2   ;vypisyvaem , polzujimsia MACRo
        CALL terminate

    errInFileOpening ENDP
;---------------------------------------------------------

    errorCreatingFile PROC
        write error1       ;vypisyvaem , polzujimsia MACRo
        CALL terminate
    errorCreatingFile ENDP
;--------------------------------------------------------------


        pabaiga proc       
            mov ax, 4c00h
            int 21h
            ret
        pabaiga endp


END pradzia


Как сейчас делать операцию НОД ?
вот имею токой код к ришеннию Нод'а :

Код

nod    proc    near
            push    si          ;v stek
            push    di          
            or      si,si        
            jne     ne_nol    
               mov ax,di       
            jmp     konec
ne_nol:
            mov  ax,di
            cwd                   
            idiv  si    
     
            mov     di,si
            mov     si,dx
            call    nod

konec:
            pop        di
            pop        si
            ret
nod    endp


Может моглибы тут подредактировать ? Или нависти на нужную мысль,
былбы очен блогодарен..
Я начинаюсчий в этом деле.Спасибо за панимание.
--------------------
#iddj
PM MAIL   Вверх
Mikl_
Дата 6.11.2008, 10:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 9.11.2007

Репутация: 8
Всего: 14



ddj, "Сами мы не местные..." с таким русским языком браться за программирование  smile 
"Как сейчас делать операцию НОД ? вот имею токой код к ришеннию Нод'а" смотри вот здесь пример на С, на ассемблер сам переведешь   smile 
PM MAIL   Вверх
ddj
Дата 10.11.2008, 15:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 106
Регистрация: 26.2.2008

Репутация: нет
Всего: 1



Mikl_
Цитата

"Сами мы не местные..."

а жителем других стран что ползаваться нельзя. . ? 
(Я ползуюсь транслитом..) 
а в прочем в твоем посте нечего ценного нету.. оффтопиш только
--------------------
#iddj
PM MAIL   Вверх
Mikl_
Дата 11.11.2008, 10:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 9.11.2007

Репутация: 8
Всего: 14



ddj, обиделся маленький, не написали за него программу  smile 
Цитата(ddj)
а в прочем в твоем посте нечего ценного нету.. оффтопиш только
 там вообще-то ссылка была на вычисление НОДа (Бинарный алгоритм Евклида) написанная на С, так что еще вопрос, кто из нас тут флудит?

Это сообщение отредактировал(а) Mikl_ - 14.11.2008, 12:03
PM MAIL   Вверх
Akina
Дата 11.11.2008, 11:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 1
Всего: 454



Ну алгоритмически НОД так и считается - есть пара чисел, делим большее на меньшее, если остаток не равен нулю, то теперь берем пару меньшее и остаток и повторяем, а если остаток ноль, то меньшее и есть НОД.
Где собсно сама проблема?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
ddj
Дата 27.11.2008, 00:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 106
Регистрация: 26.2.2008

Репутация: нет
Всего: 1



кто бы зделал эту программу ? отблагадарю
--------------------
#iddj
PM MAIL   Вверх
Mikl_
Дата 27.11.2008, 05:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 9.11.2007

Репутация: 8
Всего: 14



ddj, ты вводишь в заблуждение, типа "подскажите, как" вот тебе и подсказывают. Иначе твоё письмо должно было начинаться так: "Доброе время суток, обрасчаюсь к вам с маленкой просьбой кто бы зделал эту программу ? отблагадарю", а для таких просьб есть раздел центр помощи
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm для начинающих"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm для начинающих | Следующая тема »


 




[ Время генерации скрипта: 0.0781 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.