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:
Kod:
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 ' <L> - wybor dane1; <P> - wybor dane2; <w> - wykonanie operacji; <Esc> - 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