logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Jak obliczyć średnią z pomiarów w assemblerze z dziesięciobitowego AC?

rafapa 31 Mar 2006 10:42 1059 2
REKLAMA
  • #1 2477536
    rafapa
    Poziom 11  
    Posty: 11
    mam następujące zadanie i nie wiem jak skończyć:
    ;Wyniki trzech pomiarów wykonywanych za pomoca dziesieciobitowego przetwornika AC
    ;znajduja sie w pamieci w komórkach 30h do 35H (najpierw bit HB, pózniej LB). Obliczyc
    ;przyblizona wartosc srednia tych pomiarów, a wynik zapisan w komórce 38H. Zalozyc,
    ;ze wartosc 1/3 jest równa w przyblizeniu: 1/4 + 1/16 + 1/64.

    ;wykonali:
    org 0
    sjmp pocz
    org 100h
    pocz:
    MOV A,31H ;przeniesienie do aku zaw, kom 31h
    ADD A,33H ;dodanie aku i zaw kom 33h
    MOV R1,A ;wynik zapisujemy w rejestrze R1

    MOV A,30H ;przeniesienie do aku zaw, kom 30h
    ADDC A,32H ;dodanie aku i zaw kom 32h
    MOV R3,A ;wynik zapisujemy w rejestrze R3

    MOV A,R1 ;analogicznie jak wyzej dla R1
    ADD A,35H ;----------------------------
    MOV R1,A ;----------------------------

    MOV A,R3 ;----------------------------
    ADDC A,34H ;----------------------------
    MOV R3,A ;----------------------------

    CLR C
    mov a,r3
    RRC a ; DZIELENIE PRZEZ DWA DLA HB
    mov r3,a

    mov a,r1
    RRC a ; DZIELENIE PRZEZ DWA DLA LB
    mov r1,a

    CLR C
    mov a,r3
    RRC a
    mov r3,a

    mov a,r1 ;PODZIELONE PRZEZ 4 DLA HB
    RRC a ;-----JW----------------LB
    mov r1,a

    MOV 20h,r1 ;zapisanie do komorki 20h rejestru R1(podzielone przez 4)
    MOV 21H,r3 ;zapisanie do komorki 21h rejestru R3(podzielone przez 4)

    clr c
    mov a,r3
    rrc a
    mov r3,a

    ;podzielone przez 8
    mov a,r1
    rrc a
    mov r1,a

    clr c
    mov a,r3
    rrc a
    mov r3,a

    mov a,r1
    rrc a
    mov r1,a ;podzielone przez 16

    mov 22h,r3
    mov 23h,r1

    clr c
    mov a,r1
    rrc a
    mov r1,a ;podzielone przez 32

    clr c
    mov a,r1
    rrc a
    mov r1,a ;podzielone przez 64

    mov 24h,r1

    mov a,20h
    add a,22h
    mov

    Moderowany przez jankolo:

    Przeniesiono z działu Komputery Software

  • REKLAMA
  • Pomocny post
    #2 2493295
    gregor7pl
    Poziom 14  
    Posty: 69
    Pomógł: 7
    Ocena: 4
    Przede wszystim, jesli oczekujesz pomocy, musisz podac na jaki procek ten assembler. Po komendach widze ze nie jest to x86, czyli PCet. Byc moze chodzi o jakis mikrokontroler. Nie wiem czy wiesz, ale assembler nie ejst przenoscym jezykiem i nie ma jakies jego standardu - w przeciwienstwie do Ansi C czy pascala. Dalej nie wiem czy wiesz, ze nawet jesli w dwoch roznych assemblerach wystepuje ta sama instrukcja, to w zaleznosci od platformy sprzetowej efekt jest dzialania moze byc inny, czasami diametralnie.
    Wezmy ot tak sobie przesuniecia bitowe, o ktore Twoj programik az sie prosi. na x86 jest ca najmniej kilka roznych sposobow przesuwania bitowego (przez flage C, zawijane i itd, ), a na DSP ktore wlasnie mecze, przesuwanie bitowe jest tylko jedno.

    PS
    Przesuniecie bitowe w lewo lub w prawo w przypadku uzupelnianai zerami odpowieda mnozeniu/dzieleniu przez potege liczby 2.
  • #3 2496115
    rafapa
    Poziom 11  
    Posty: 11
    procek to MCS 51 ... ale program już opanowałem :) troche to trwało bo dopiero zaczynam ale poradziłem sobie,,,, dzięki za zainteresowanie...:)
REKLAMA