Pokaż wyniki 1 do 1 z 1

Temat: funkcje logiczne i arytmetyczne

  1. #1

    Domyślnie funkcje logiczne i arytmetyczne

    Witam,

    dzrodzy forumowicze, potrzebował bym bardzo:

    algorytm działania poniższego programu.

    Być może jest w śród was specjalista, któremu zajmie to 5 minut, nie musi być wszystko super opisane.

    Chętnie pomogę w rysunkach AutoCad, NX, Catia, w 2D i 3D zgodnie z normami, również modele dynamiczne.

    org 100h

    lf=10
    cr=13
    finit

    ;wypisuje tekst wstepny

    mov ah, 9
    mov dx, wstep
    int 21h

    mov ah, 9
    mov dx, wstep2
    int 21h

    mov ah, 9
    mov dx, wstep255
    int 21h

    mov ah, 9
    mov dx, wstep26
    int 21h

    ;dodawanie

    call _nwln
    mov ah, 9
    mov dx, wstep27
    int 21h

    call pob_war_z_klaw
    call dodawanie
    call wypiszwynik

    ;Odejmowanie

    call _nwln
    mov ah, 9
    mov dx, wstep37
    int 21h

    call _nwln
    mov ah, 9
    mov dx, wstep388
    int 21h

    call pob_war_z_klaw
    call odejmowanie
    call wypiszwynik

    ;mnozenie


    call _nwln
    mov ah, 9
    mov dx, wstep47
    int 21h

    call pob_war_z_klaw
    call mnozenie
    call wypiszwynik


    ;dzielenie


    call _nwln
    mov ah, 9
    mov dx, wstep57
    int 21h

    call pob_war_z_klaw
    call dzielenie
    call wypiszwynik
    call dzielenie_reszta

    mov ah, 9
    mov dx, wynikreszta
    int 21h

    mov eax, ecx

    call _pisz_ld


    call _nwln
    call _nwln
    mov ah, 9
    mov dx, wstep266
    int 21h

    ; operacja and

    call _nwln
    mov ah, 9
    mov dx, wstep67
    int 21h

    call pob_war_z_klaw
    call operacja_and
    call wypiszwynik


    ; operacja or

    call _nwln
    mov ah, 9
    mov dx, wstep77
    int 21h

    call pob_war_z_klaw
    call operacja_or
    call wypiszwynik

    call _nwln
    call _nwln
    mov ah, 9
    mov dx, koniec
    int 21h

    jmp przeskocz

    ; pobiweranie wartosci z klawiatury
    pob_war_z_klaw:
    xor ebx, ebx
    xor eax, eax
    xor edx, edx

    call _nwln
    mov ah, 9
    mov dx, wstep21
    int 21h
    call pobieranie ; wywolany podprogram do pobrania
    mov [A], ebx

    xor ebx, ebx
    call _nwln
    mov ah, 9
    mov dx, wstep22
    int 21h
    call pobieranie ; wywolany podprogram do pobrania
    mov [B], ebx
    ret
    ; pobieranie wartosci zakonczone

    ;wypisuje wynik xor ebx, ebx
    wypiszwynik:
    call _nwln
    mov ah, 9
    mov dx, wstep21
    int 21h
    mov eax, ecx

    call _pisz_ld

    xor ebx, ebx
    xor eax, eax
    xor ecx, ecx
    xor edx, edx
    ret


    ;koniec wypisuje wynik

    ;obliczenia
    dodawanie:
    pushfd

    push edx
    push eax
    push esi

    xor ebx, ebx
    xor eax, eax
    xor ecx, ecx
    xor edx, edx
    mov eax, [A]

    add eax , [B]

    mov ecx, eax

    pop esi
    pop eax
    pop edx

    popfd
    ret

    odejmowanie:
    pushfd

    push edx
    push eax
    push esi

    xor ebx, ebx
    xor eax, eax
    xor ecx, ecx
    xor edx, edx
    mov eax, [A]

    sub eax , [B]
    mov ecx, eax

    pop esi
    pop eax
    pop edx

    popfd
    ret
    mnozenie:
    pushfd

    push edx
    push eax
    push esi

    xor ebx, ebx
    xor eax, eax
    xor ecx, ecx
    xor edx, edx
    mov eax, [A]
    mov ecx, [B]

    imul eax , ecx

    mov ecx, eax

    pop esi
    pop eax
    pop edx

    popfd
    ret

    dzielenie:
    pushfd

    push eax
    push esi

    xor ebx, ebx
    xor eax, eax
    xor ecx, ecx
    xor edx, edx
    mov eax, [A]
    mov edi, [B]

    div edi
    xor ecx, ecx

    mov ecx, eax

    pop esi
    pop eax

    popfd
    ret

    dzielenie_reszta:
    pushfd

    push eax
    push esi

    xor ebx, ebx
    xor eax, eax
    xor ecx, ecx
    xor edx, edx
    mov eax, [A]
    mov edi, [B]

    div edi
    xor ecx, ecx

    mov ecx, edx


    pop esi
    pop eax

    popfd
    ret

    operacja_and:
    pushfd

    push edx
    push eax
    push esi

    xor ebx, ebx
    xor eax, eax
    xor ecx, ecx
    xor edx, edx
    mov eax, [A]

    and eax , [B]

    mov ecx, eax

    pop esi
    pop eax
    pop edx

    popfd
    ret

    operacja_or:
    pushfd

    push edx
    push eax
    push esi

    xor ebx, ebx
    xor eax, eax
    xor ecx, ecx
    xor edx, edx
    mov eax, [A]

    or eax , [B]

    mov ecx, eax

    pop esi
    pop eax
    pop edx

    popfd
    ret

    ;pobiera_liczbe_________________________________
    pobieranie:
    pushfd
    push ecx
    push edx
    push eax
    push esi

    xor ebx, ebx
    xor eax, eax
    xor edx, edx
    getliczba1:

    mov ah, 7
    int 21h

    mov dl, al
    mov ah, 2
    int 21h

    xor ah, ah
    cmp ax, 0dh
    je w_enter1

    sub al, 30h
    mov bx, ax

    jmp getliczba1

    w_enter1:

    pop esi
    pop eax
    pop edx
    pop ecx

    popfd
    ret


    ;liczba w ebx__________________________________






    ;wypisuje to co rejestrze eax___________________
    _pisz_ld:

    pushfd
    push ecx
    push edx
    push eax
    push esi

    xor si, si
    mov ecx, 10

    _pisz_ld_petla:
    xor edx, edx
    div ecx
    mov [_pisz_bufor+si], dl
    inc si
    or eax, eax
    jnz _pisz_ld_petla
    mov ah, 0eh

    _pisz_ld_wypis:
    mov al, [_pisz_bufor+si-1]
    or al, "0"
    int 10h
    dec si
    jnz _pisz_ld_wypis

    pop esi
    pop eax
    pop edx
    pop ecx
    popfd

    ret

    _pisz_bufor: times 40 db 0


    _nwln:
    push ax
    push bp
    mov ax, 0e0ah
    int 10h
    mov al, cr
    int 10h
    pop bp
    pop ax
    ret
    ; po wypisaniu i nwl________________________

    przeskocz:

    mov ax, 4c00h
    int 21h

    A dd 0

    B dd 0


    wstep db "Witaj $"
    wstep2 db "Ten prezentuje dzialanie podstawowych funkcji arytmetyki
    dziesietnej $"
    wstep25 db "i funkcji logicznych na liczbach calkowitych od 0 do 9
    $"
    wstep255 db " (Po wpisaniu wartosci liczby wcisnij ENTER)$"
    wstep26 db " Funkcje arytmetyki dziesietnej: $ "
    wstep27 db "-dodawanie a + b $ "
    wstep37 db "-odejmowanie a - b $ "
    wstep388 db "wpisz a wieksze od b$"
    wstep47 db "-mnozenie a * b $ "
    wstep57 db "-dzielenie a / b $"
    wstep266 db "Funkcje logiczne (wartosci wpisywane w systemie HEX wynik
    tez w systemie HEX)$"
    wstep67 db "-funkcja logiczna and a and b $ "
    wstep77 db "-funkcja logiczna or a or b $ "


    wstep28 db "Wpisz wartosc: $ "
    wstep21 db "a=$ "
    wstep22 db "b=$ "
    wynik db "wynik= $"
    wynikreszta db " reszta $"
    koniec db
    Ostatnio edytowane przez karol91 : 05-23-2013 - 11:36

Zasady Postowania

  • Nie możesz zakładać nowych tematów
  • Nie możesz pisać wiadomości
  • Nie możesz dodawać załączników
  • Nie możesz edytować swoich postów
  •  
Subskrybuj