Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Asembler - podstawy, programowanie

28 Lut 2007 17:57 2551 6
  • Poziom 12  
    Witam,
    gosc przyjął, że wszyscy wszystko wiedzą i ułożył jakis program, mowiac, że wynik ma byc w BX i wstukujemy liczbę 274. Nie wiem nawet do czego ma sluzyc ten program. Nie mamy podstaw, nie bylo wprowadzenia. Nic nie wiemy. Nawet nie wiemy jakich materiałów szukać by zmontować jakąś przydatną wiedzę. Cos wspominal o Asemblerze, ale u nas na oddziale nikt nic nie kuma z programowania. Moglby ktos wylozyc nam jakies podstawy odnosnie algorytmu w zalaczniku i programu, ktory jest ponizej?

    XOR_BX,BX
    XOR_CL,CL
    POCZATEK:
    MOV_AH,08H
    INT_21H
    MOV_CH,AL
    CMP_AL,13
    JNE_DALEJ
    CMP_CL,1
    JE_KONIEC
    JMP_POCZATEK
    DALEJ:
    TU KAZAL COS ULOZYC, NIKT NIE WIE CO :?:
    MOV_DL,CH
    MOV_AX,02H
    INT_21H
    SUB_CH,48
    MOV_AX,BX
    MOV_BX,10
    MUL,BX
    ADD_AX,CH
    MOV_BX,AX

    MOV_CL,1
    JMP_POCZATEK
    KONIEC

    wiemy tylko co to są AX (akumulator), BX (rejestr bazowy, CX (rejestr zliczający), DX (rejestr danych). Nic nam wiecej nie wiadomo. Moglby ktos podzielic sie swoja wiedza i podac jakies zrodla wiedzy dla laików?


    pozdrawiam serdecznie.
  • Pomocny post
    Poziom 21  
    Witam!
    Z kodu wynika, ze chyba to jakis procek 8086 i w gore. Zeby to skumac to liste rozkazow trzeba znac no i troche opisu by sie przydalo. Poszukaj w necie. Liste rozkazow mam to moge podeslac. Ksiazki w wersji pdf niestety raczej nie mam. A kod ten realizuje zapewne graf z Algorytm.doc. I te podkreslniki w mnemonikach to nie potrzebne sa np. MOV_BX,CX -> MOV BX,CX
    Pozdrawiam
  • Poziom 12  
    Tak, to procesor 8086. A co to wogole jest za program, ktory podalem?
  • Pomocny post
    Poziom 21  
    Przerwanie oparlem o wywolania DOS-owe

    XOR_BX,BX -> zerowanie BX
    XOR_CL,CL -> zerowanie CL
    POCZATEK:
    MOV_AH,08H -> ustawia ze odczyt klawiatury
    INT_21H -> wywolanie przerwania odczyty klawiatury
    MOV_CH,AL -> do CH znak ASCII klawisza nacisnietego
    CMP_AL,13 ->sprawdzenie czy ENTER
    JNE_DALEJ ->jak nie ENTER to skacz dalej
    CMP_CL,1 -> sprawdzenie czy w CL 1
    JE_KONIEC -> jak w CL 1 to koniec
    JMP_POCZATEK -> jak ENTER ale CL nie 1 to poczatek
    DALEJ:
    TU KAZAL COS ULOZYC, NIKT NIE WIE CO->tu nie wywroze comialo byc
    MOV_DL,CH ->wczytanie pewnie kodu znaku ASCII do DL
    MOV_AX,02H -> ustawia ze na ekran ma wybic znak spod DL
    INT_21H -> wywolanie przerwania
    SUB_CH,48 -> odjecie od chyba kodu znaku ASCII 48 (nie wiem po co?)
    MOV_AX,BX -> 3 instrukcje w dol realizuje BX<-BX*10
    MOV_BX,10
    MUL,BX
    ADD_AX,CH
    MOV_BX,AX -> BX<-BX+CH

    MOV_CL,1 -> ustawienie w CL 1
    JMP_POCZATEK i skok na poczatek
    KONIEC

    Poogladaj graf z pliku .doc moze kapniesz sie co gosciu gadal. Ogolnie to polega na odczycie klawiatury, wybicie znaku i oczekiawnie na ENTER zeby skonczyc.
  • Poziom 12  
    Mam kilka pytan:
    1. Co to jest ASCII?
    2. Czy jesli jest napisane CL, CH to chodzi o mniej/bardziej znaczącą część rejestru zliczającego CX?
    3. Które cykle pracy procesora wymagają dostępu do magistrali, a które nie?
    4. Zna ktoś moze wzor na obliczenie pamięci w programie oraz STOSie?
    5. Moze ktos podac jakies źródla dla totalnie zielonych o pisaniu programow w asemblerze?


    dzięki za pomoc :)
    pozdrawiam serdecznie.
  • Poziom 12  
    I co? nikt nie pomoze? :(
  • Pomocny post
    Poziom 21  
    Co do 1) standard zapisu znaków. Masz 8 bitów i pod nimi ukryte sa literki,cyferki, powrot karetki, nastepnej linii itp.
    2)Tak CL mniej znaczacy bajt, CH bardziej znaczacy bajt CX
    3) procek 8086 ma dwa bloki BIU i EU (BusInterfaceUnit i ExecutUnit) prauja one niezaleznie. EU dekoduje rozkazy wykonuje je, BIU zapewnia komuniacje z otoczeniem, zapelnia FIFO (chyba 6 bajtow) dla EU gdy magistrala jest wolna.
    EU ma wyzszy priorytet w dostepie do magistrali od BIU. Dostep do magistrali zalezy od tego co procek ma robic. Cykle pracy procka sa 4:
    fetch (pobranie) - wymaga dostepu do magistrali
    read (odczyt) - argumenty z pamieci moze pobierac wtedy wymaga dostepu do magistrali
    wykonanie (execute)-nie wymaga dostepu do magistrali wtedu BIU FIFO se zapelnia
    zapis (write) wynik do pamieci wymaga dostepu do magistrali
    4)ogolnie w 8086 AF=EA+16*AS, AF-adres fizyczny, EA-efektywny adres (przesuniecie wzgledem segmentu), AS-adres segmentu
    sa 4 rejestry segmentowe CS,DS,SS,ES CS-code segment, DS-data segment, ES-extra segment, SS-stack segment

    5) 8086 poryty procek jak dla poczatkujacego. Lepiej juz 8080 a najlepiej '51.