Pokaż wyniki 1 do 3 z 3

Temat: Potrzebna pomoc

  1. #1

    Domyślnie Potrzebna pomoc

    Witam , mam do napisania sprawozdanie odnośnie 3 prostych programu napisanych w asamblerze lecz niestety za dużo o tym języku programowania nie wiem Sprawozdanie ma wyglądać tak że do mam napisać co robią konkretne linijki programu.

    Pierwszy program:
    .model small
    .stack 100h
    .data
    info db "Dzien dobry. To pierwszy program",0Ah,0Dh,'$'

    .code
    glowna proc

    mov ax,@data
    mov ds,ax

    mov Ah,0
    mov Al,3
    int 10h


    mov ah,9
    mov dx,offset info
    int 21h

    mov ax,4C00h
    int 21h
    glowna endp

    end glowna


    Drugi program:



    .model small
    .stack 100h
    .data
    info db "Zabawa z diodami klawiatury (obserwuj diody CapsLock i NumLock)",0ah,0dh,'$'
    info1 db "Wybierz liczbe powtorzen w petli od 1 do 4",0ah,0dh,'$'
    info3 db "Wpisz liczbe z zakresu 1 do 4",0ah,0dh,'$'
    liczba dw ?


    .code
    glowna proc
    mov ax,@data
    mov ds,ax

    mov ah,0
    mov al,3
    int 10h

    mov ah,9
    mov dx,offset info3
    int 21h

    poczatek:
    mov ah,8
    int 21h
    cmp al,'1'
    je liczba1
    cmp al,'2'
    je liczba2
    cmp al,'3'
    je liczba3
    cmp al,'4'
    je liczba4

    mov ah,0
    mov al,3
    int 10h

    mov ah,9
    mov dx,offset info3
    int 21h
    jmp poczatek
    liczba1:
    mov liczba,1
    jmp koniec
    liczba2:
    mov liczba,2
    jmp koniec
    liczba3:
    mov liczba,3
    jmp koniec
    liczba4:
    mov liczba,4
    koniec:

    mov ax,4C00h
    int 21h
    glowna endp

    end glowna

    Trzeci program:


    .model small
    .stack 100h
    .386 ;aby mozna bylo stosowac przesuniecia o kilka pozycji

    .data
    info db "Zabawa z diodami klawiatury (obserwuj diody CapsLock i NumLock)",0ah,0dh,'$'
    info1 db "Wybierz liczbe powtorzen w petli od 1 do 9",0ah,0dh,'$'
    info3 db "Podaj liczbe z zakresu od 1 do 9",0ah,0dh,'$'
    info4 db "Czy sprawdzac 'CapsLock' t/n (male litery) ?",0ah,0dh,'$'
    liczba dw ?
    czas db ?
    cap db ?

    .code
    glowna proc
    mov ax,@data
    mov ds,ax

    mov ah,0
    mov al,3
    int 10h

    mov ah,9
    mov dx,offset info
    int 21h

    mov ah,9
    mov dx,offset info1
    int 21h

    poczatek:
    mov ah,8
    int 21h
    cmp al,'1'
    je liczba1
    cmp al,'2'
    je liczba2
    cmp al,'3'
    je liczba3
    cmp al,'4'
    je liczba4
    cmp al,'5'
    je liczba5
    cmp al,'6'
    je liczba6
    cmp al,'7'
    je liczba7
    cmp al,'8'
    je liczba8
    cmp al,'9'
    je liczba9

    mov ah,0
    mov al,3
    int 10h

    mov ah,9
    mov dx,offset info3
    int 21h
    jmp poczatek

    liczba1:
    mov liczba,1
    jmp koniec
    liczba2:
    mov liczba,2
    jmp koniec
    liczba3:
    mov liczba,3
    jmp koniec
    liczba4:
    mov liczba,4
    jmp koniec
    liczba5:
    mov liczba,5
    jmp koniec
    liczba6:
    mov liczba,6
    jmp koniec
    liczba7:
    mov liczba,7
    jmp koniec
    liczba8:
    mov liczba,8
    jmp koniec
    liczba9:
    mov liczba,9
    koniec:

    zzz:
    mov ah,9
    mov dx,offset info4
    int 21h

    mov ah,8
    int 21h

    cmp al,'t'
    je qqq
    cmp al,'n'
    je aaa4
    jmp zzz

    qqq:
    mov cap,1
    jmp xxx
    aaa4:
    mov cap,0
    xxx:

    mov cx,liczba
    petla:
    pusha
    call delay
    mov ah,0Bh
    int 21h
    popa

    call swiec2

    cmp cap,1
    je sss
    jmp www
    sss:

    mov ah,0Bh
    int 21h
    call swiec3

    www:
    loop petla

    mov ax,4c00h
    int 21h
    glowna endp

    swiec1 proc
    push ds
    mov ax,40h
    mov ds,ax
    mov bx,17h
    xor byte ptr [bx],000100000b
    pop ds
    int 15h
    ret
    swiec1 endp

    swiec2 proc
    push ds
    mov ax,40h
    mov ds,ax
    mov bx,17h
    xor byte ptr [bx],00100000b
    pop ds
    int 15h
    ret
    swiec2 endp

    swiec3 proc
    push ds
    mov ax,40h
    mov ds,ax
    mov bx,17h
    xor byte ptr [bx],01000000b
    pop ds
    int 15h
    ret
    swiec3 endp

    delay proc
    mov ah,2
    int 1Ah
    shl dh,4
    shr dh,4
    add dh,2
    cmp dh,9
    ja kkkk
    jmp mmmm
    kkkk:
    sub dh,10
    mmmm:
    mov czas,dh
    petla2:
    mov ah,2
    int 1Ah
    shl dh,4
    shr dh,4
    cmp dh,czas
    je jestOK
    jmp petla2
    jestOK:
    ret
    delay endp
    end glowna

  2. #2

    Domyślnie

    Pierwszy ustawia rozdzielczość na 80x25 i wypisuje text na ekranie. Reszta za długa na free siedzenie. Mogę przeanalizować za 400zł.

  3. #3

    Domyślnie

    Elitegroup Drogo chcesz jak na 30 minut pracy (licząc że się nie zna asma i się googluje). :P
    Heh a mi się przypomniało jak programowałem w asmie
    Do rzeczy , za free nikt za ciebie nie zrobi zadania. Zobacz ile zarabiają programiści i odpowiednio wyceń jak chcesz gotowca.

    Teraz najistotniejsze dla Ciebie czyli to czego masz szukać :
    po pierwsze podstawy podstaw - czyli co są rejstry , je, jz , cmp, mov itd , czyli skoki, porównania, przeniesienia,itd.
    przerwania BIOS - int 10h
    przerwania DOS int 21h

    jak poznasz , reszta sama się fajnie ułoży

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