Witam Serdecznie,
jestem w trakcie pisania kodu, niestety nie do końca mi to wychodzi
W związku z powyższym proszę o pomoc.
Oto kod programu:
format MZ
entry main: start
stack 100h
segment main
start:
call czysc
mov ax, dane
mov ds, ax
główna:
call dana1
call minus
call dana2
call rownasie
call wynik
call pytanie
call linia1
call opcje
call linia2
call wybor
ety1:
call pobierz
cmp al, 1Bh
je koniec
;jne ety1
cmp al, 'L'
je wprowadz_dana1
cmp al, 'P'
je wprowadz_dana2
;cmp al, 'L'
;je wykonaj_operacje
jne ety1
;mov ah, 4ch
;int 21h
;-------------------
wprowadz_dana1:
mov dx, text1
call wyswietl
mov bx, liczba1
mov cx, 8
petla:
mov ah,07h
int 21h
cmp al,'0'
je dobrze
cmp al,'1'
je dobrze
jne petla
dobrze:
mov [bx], al
mov dx, bx
call wyswietl
inc bx
loop petla
;call czysc
;call główna
call dana1
ret
wprowadz_dana2:
mov dx, text2
call wyswietl
mov bx, liczba2
mov cx, 8
petla1:
mov ah,07h
int 21h
cmp al,'0'
je dobrze1
cmp al,'1'
je dobrze1
jne petla1
dobrze1:
mov [bx], al
call wysw_bin
inc bx
loop petla
call dana2
ret
wysw_bin:
mov cl,8
etyk1:
push cx
rcl [liczba2],1
jc etyk2
mov dl,'0'
jmp etyk3
etyk2:
mov dl,'1'
etyk3:
mov ah,2
int 21h
pop cx
loop etyk1
rcl [liczba2],1
ret
wyswietl:
mov ah, 09h
int 21h
ret
pobierz:
mov ah, 07h
int 21h
ret
koniec:
mov ah, 4ch
int 21h
minus:
mov bh,0
mov dl, 00
mov dh, 1
mov ah, 2
int 10h
mov dx, text4
call wyswietl
ret
rownasie:
mov bh,0
mov dl, 00
mov dh, 3
mov ah, 2
int 10h
mov dx, text5
call wyswietl
ret
dana1:
mov bh,0
mov dl, 00
mov dh, 00
mov ah, 2
int 10h
mov dx, text1
call wyswietl
mov dx, liczba1
call wyswietl
ret
dana2:
mov bh,0
mov dl, 0
mov dh, 2
mov ah, 2
int 10h
mov dx, text2
call wyswietl
mov dx, liczba2
call wyswietl
ret
wynik:
mov bh,0
mov dl, 0
mov dh, 4
mov ah, 2
int 10h
mov dx, text3
call wyswietl
ret
pytanie:
mov bh,0
mov dl, 0
mov dh, 6
mov ah, 2
int 10h
mov dx, text6
call wyswietl
ret
opcje:
mov bh,0
mov dl, 0
mov dh, 8
mov ah, 2
int 10h
mov dx, text7
call wyswietl
ret
czysc:
mov ah, 0
mov al, 3
int 10h
ret
linia1:
mov bh,0
mov dl, 0
mov dh, 7
mov ah, 2
int 10h
mov dx, text9
call wyswietl
ret
linia2:
mov bh,0
mov dl, 0
mov dh, 9
mov ah, 2
int 10h
mov dx, text9
call wyswietl
ret
wybor:
mov bh,0
mov dl, 0
mov dh, 10
mov ah, 2
int 10h
mov dx, text10
call wyswietl
ret
segment dane
liczba1 db ' $'
liczba2 db ' $'
tekst db 'TESTOWY$'
text1 db 'Dana1 = $'
text2 db 'Dana2 = $'
text3 db 'Wynik = $'
text4 db ' - $'
text5 db ' = $'
text6 db 'Co chcesz zrobic?$'
text7 db ' - wybor dane1;
- wybor dane2; - wykonanie operacji; - wyjscie$'
text9 db '---------------------------------------------------------------$'
text10 db 'Wybor: $'
Mianowicie:
-
chciałbym aby podczas wprowadzania pierwszej i drugiej liczby, wyświetlały się one w jednym ciągu (w czasie ich edycji), a nie jak ma to miejsce teraz - z odstępami
-
ponad to fajnie by było dodać możliwość cofania omyłkowo prowadzonej 1 lub 0 w czasie edycji zmiennej
-
oczywiście tak jak w temacie, genialnie by było gdyby druga wartość została odjęta od pierwszej (dane wprowadzamy w kodzie U2)
-
no i na końcu konwersja do poszczególnych systemów binarnych.
Z góry dziękuję za wskazówki/linki/korekty/itp./itd…
Jeśli uda mi się coś jeszcze wykombinować, to zaktualizuję kod