Assembler 8086

Ako ste početnik ovo je pravo mjesto za vas. Sva opšta diskusija o elektronici i/ili elektrotehnici se treba odvijati ovdje.

Moderators: pedja089, stojke369, [eDo], trax, LAF

Post Reply
Groinx
Penjem se :)
Penjem se :)
Posts: 56
Joined: 21-04-2009, 17:59

Assembler 8086

Post by Groinx »

Kako u asembleru ako imam bin. broj 00110110b da provjerim je li mi 4 bit u jedinici ako itko zna kako bih ovo mogao rjesiti jer se prvi put srećem sa assemblerom?
sonata
Napredujem
Napredujem
Posts: 121
Joined: 08-01-2013, 18:01

Re: Assembler 8086

Post by sonata »

U jedan akumulator uneseš broj kojeg "testiraš", u drugi uneseš 00001000 (8d), odradiš nad oba akumulatora funkciju "AND" i ako je rezultat 0, onda je tvoj bit u nuli, a ako je 8, onda je je u "1".

Davno sam se bavio assemblerom za 6510, za 8086 nikad nisam pa ne znam naredbe, ali princip je opisan i trivijalan je :D
Nullius addictus iurare in verba magistri
Groinx
Penjem se :)
Penjem se :)
Posts: 56
Joined: 21-04-2009, 17:59

Re: Assembler 8086

Post by Groinx »

Pozdrav imam zadatak da u niz unesem 10 brojeva i da mi za se parne brojeve manje od 5 program učini mnozenje s 2, ja sam napravio ali meni samo pomnozi brojeve koji su i parni i neparni sa 2, pa ako itko zna gdje mi je greska da me ispravi hvala. Boldani dio mi je sumnjiv.

Code: Select all

.MODEL small
.DATA
    niz DB 10 DUP (0)
.STACK
.CODE
NewLine MACRO
    MOV dl,10
    MOV ah,02h
    INT 21h
    MOV dl,13
    MOV ah,02h
    INT 21h
ENDM
    
start:
    MOV ax,@DATA
    MOV ds,ax
    
    MOV si,0
    petlja_u:
        CMP si,10
        JGE end_petlja_u
        
        MOV ah,01h
        INT 21h
        
        SUB al,'0'
        MOV niz[si],al
        
        INC si
        JMP petlja_u
    end_petlja_u:
    NewLine
    
    MOV si,0
    petlja_i:
        CMP si,10
        JGE end_petlja_i
        
        
        MOV al,niz[si]
        ADD al,'0'
        MOV dl,al
        MOV ah,02h
        INT 21h
        
        
        INC si
        JMP petlja_i
    end_petlja_i:
    NewLine
    
    MOV si,0  ;izbaci pomnozene sa 2
    petlja_m:
        CMP si,10
        JGE end_petlja_m
        
        MOV al,niz[si]
        
        CMP al,5
        JLE mnozi
        
        INC si
        JMP petlja_m
        
        mnozi:
           [b] MOV dl,al
            AND dl,0
            CMP dl,0
            JE mmmm
            INC si
            JMP petlja_m[/b]
            
        mmmm:
            SAL al,1
            MOV dl,al
            ADD dl,'0'
            MOV ah,02h
            INT 21h
            INC si
            JMP petlja_m
    end_petlja_m:
    NewLine
        
    MOV ax,4c00h
    INT 21h
END start
Groinx
Penjem se :)
Penjem se :)
Posts: 56
Joined: 21-04-2009, 17:59

Re: Assembler 8086

Post by Groinx »

Uspio sam rješiti :)
Groinx
Penjem se :)
Penjem se :)
Posts: 56
Joined: 21-04-2009, 17:59

Re: Assembler 8086

Post by Groinx »

Kako da provjerim je li broj 52 djeljiv sa 6 preko naredbe SHR?
sonata
Napredujem
Napredujem
Posts: 121
Joined: 08-01-2013, 18:01

Re: Assembler 8086

Post by sonata »

Jesi li siguran da je djeljivost sa 6 bila u igri? Šiftanje bitova udesno je dijeljenje s dva pa ostatak postavlja carry flag. Tako se može provjeriti djeljivost sa 2, sa 4, sa 8 itd...

Ali djeljivost sa 6 samo preko SHR? Ako pronađeš rješenje, i mene zanima.

Da bi broj bio djeljiv sa 6, mora biti paran i djeljiv sa 3, a djeljivost sa 3 postoji ako je zbroj (dekadskih) znamenki djeljiv s 3. Provjera je trivijalna, ali ne sa SHR :D
Nullius addictus iurare in verba magistri
Post Reply