.MODEL SMALL
JUMPS ;eliminuje problem relatywnych skokow
.STACK 100h
DANE SEGMENT
;txt1 db 13,10,'podaj liczbe HEX: $'
;txt2 db 13,10,'Liczba $'
txt1 db 13,10,'$'
txt2 db 13,10,'$'
znak dw 0
bufor dw 0
DANE ENDS
STS SEGMENT
STS ENDS
PROG SEGMENT
ASSUME DS: DANE, SS: STS, CS: PROG
;----------------------------------------------------
start:
;zainicjowanie segmentu dane
mov ax,seg DANE
mov ds,ax
;koniec inicjacji dane
;wysw txt
mov ah,9
mov dx,offset txt1
int 21h
wprowadz:
mov znak,0000h
mov cl,00h ;licznik ilosci wprowadzanych znakow
;-----------------------------------------------------
;czekanie na klawisz 0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f
wprowadz_czytaj:
mov ah,8
int 21h
;czy nie koniec
cmp cl,4
je koniec
;--------------------------------------------------
wprowadz_zero:
cmp al,'0'
jne wprowadz_jeden
;uwzglednianie
shl znak,1
shl znak,1
shl znak,1
shl znak,1
;wyswietlenie
mov dl,'0'
mov ah,2
int 21h
inc cl
jmp wprowadz_czytaj
;---------------------------------------------------
wprowadz_jeden:
cmp al,'1'
jne wprowadz_dwa
;uwzglednianie
shl znak,1
shl znak,1
shl znak,1
shl znak,1
inc znak
;wyswietlenie
mov dl,'1'
mov ah,2
int 21h
inc cl
jmp wprowadz_czytaj
;----------------------------------------------------
wprowadz_dwa:
cmp al,'2'
jne wprowadz_trzy
;uwzglednianie
shl znak,1
shl znak,1
shl znak,1
shl znak,1
add znak,2
;wyswietlenie
mov dl,'2'
mov ah,2
int 21h
inc cl
jmp wprowadz_czytaj
;----------------------------------------------------
wprowadz_trzy:
cmp al,'3'
jne wprowadz_cztery
;uwzglednianie
shl znak,1
shl znak,1
shl znak,1
shl znak,1
add znak,3
;wyswietlenie
mov dl,'3'
mov ah,2
int 21h
inc cl
jmp wprowadz_czytaj
;----------------------------------------------------
wprowadz_cztery:
cmp al,'4'
jne wprowadz_piec
;uwzglednianie
shl znak,1
shl znak,1
shl znak,1
shl znak,1
add znak,4
;wyswietlenie
mov dl,'4'
mov ah,2
int 21h
inc cl
jmp wprowadz_czytaj
;----------------------------------------------------
wprowadz_piec:
cmp al,'5'
jne wprowadz_szesc
;uwzglednianie
shl znak,1
shl znak,1
shl znak,1
shl znak,1
add znak,5
;wyswietlenie
mov dl,'5'
mov ah,2
int 21h
inc cl
jmp wprowadz_czytaj
;----------------------------------------------------
wprowadz_szesc:
cmp al,'6'
jne wprowadz_siedem
;uwzglednianie
shl znak,1
shl znak,1
shl znak,1
shl znak,1
add znak,6
;wyswietlenie
mov dl,'6'
mov ah,2
int 21h
inc cl
jmp wprowadz_czytaj
;----------------------------------------------------
wprowadz_siedem:
cmp al,'7'
jne wprowadz_osiem
;uwzglednianie
shl znak,1
shl znak,1
shl znak,1
shl znak,1
add znak,7
;wyswietlenie
mov dl,'7'
mov ah,2
int 21h
inc cl
jmp wprowadz_czytaj
;----------------------------------------------------
wprowadz_osiem:
cmp al,'8'
jne wprowadz_dziewiec
;uwzglednianie
shl znak,1
shl znak,1
shl znak,1
shl znak,1
add znak,8
;wyswietlenie
mov dl,'8'
mov ah,2
int 21h
inc cl
jmp wprowadz_czytaj
;----------------------------------------------------
wprowadz_dziewiec:
cmp al,'9'
jne wprowadz_a
;uwzglednianie
shl znak,1
shl znak,1
shl znak,1
shl znak,1
add znak,9
;wyswietlenie
mov dl,'9'
mov ah,2
int 21h
inc cl
jmp wprowadz_czytaj
;----------------------------------------------------
wprowadz_a:
cmp al,'a'
jne wprowadz_b
;uwzglednianie
shl znak,1
shl znak,1
shl znak,1
shl znak,1
add znak,10
;wyswietlenie
mov dl,'A'
mov ah,2
int 21h
inc cl
jmp wprowadz_czytaj
;----------------------------------------------------
wprowadz_b:
cmp al,'b'
jne wprowadz_c
;uwzglednianie
shl znak,1
shl znak,1
shl znak,1
shl znak,1
add znak,11
;wyswietlenie
mov dl,'B'
mov ah,2
int 21h
inc cl
jmp wprowadz_czytaj
;----------------------------------------------------
wprowadz_c:
cmp al,'c'
jne wprowadz_d
;uwzglednianie
shl znak,1
shl znak,1
shl znak,1
shl znak,1
add znak,12
;wyswietlenie
mov dl,'C'
mov ah,2
int 21h
inc cl
jmp wprowadz_czytaj
;----------------------------------------------------
wprowadz_d:
cmp al,'d'
jne wprowadz_e
;uwzglednianie
shl znak,1
shl znak,1
shl znak,1
shl znak,1
add znak,13
;wyswietlenie
mov dl,'D'
mov ah,2
int 21h
inc cl
jmp wprowadz_czytaj
;----------------------------------------------------
wprowadz_e:
cmp al,'e'
jne wprowadz_f
;uwzglednianie
shl znak,1
shl znak,1
shl znak,1
shl znak,1
add znak,14
;wyswietlenie
mov dl,'E'
mov ah,2
int 21h
inc cl
jmp wprowadz_czytaj
;----------------------------------------------------
wprowadz_f:
cmp al,'f'
jne wprowadz_czytaj
;uwzglednianie
shl znak,1
inc znak
shl znak,1
inc znak
shl znak,1
inc znak
shl znak,1
inc znak
;wyswietlenie
mov dl,'F'
mov ah,2
int 21h
inc cl
jmp wprowadz_czytaj
;----------------------------------------------------
koniec:
mov ah,9
mov dx,offset txt2
int 21h
;----------------------
mov ax,znak
add bx, 4 ;ustawiamy się na koniec bufora
mov cx, 10 ;będziemy dzielić przez 10, aby otrzymać poszczególne cyfry
konwertuj:
xor dx, dx
div cx ; dx:ax / cx
or dl, 30h ;zamieniamy cyfrę na jej odpowiedni kod ASCII
mov [bx], dl ;umieść znak w buforze
dec bx ;przesuń wskaźnik w buforze
test ax, ax ;jeżeli ax <> 0
jnz konwertuj ;to wyciągaj kolejne cyfry
mov dx,0
mov ah,9
mov dx,bx
int 21h
;----------------------
mov ah,4ch
int 21h
mov ax,9
mov dx, bx
int 21h
PROG ENDS
END start
Wyszukiwarka
Podobne podstrony:
A HEX na ASCIIzamiana R12 na R134aA Kajt na hexzamiana na bwPROGRAM zmien rozszerzenie na hexHEX DECLinuxMagazine Zamiana zdjęcia kolorowego na czarno białe w programie GIMPZamiana liczb z systemu dziesiętnego na dwójkowy i odwrotnieWniosek o zamianę kary grzywny na pracę społecznie użytecznąZamiana wskazówek CorsaB na świecącezestawy cwiczen przygotowane na podstawie programu Mistrz Klawia 6PKC pytania na egzaminPrezentacja ekonomia instytucjonalna na Moodlewięcej podobnych podstron