Assembly probléma 2

Ez a téma lezárásra került a moderátor által. A lezárás oka: Témacím… témacím… témacím…
Assembly probléma 2
2018-11-29T19:16:13+01:00
2018-11-29T19:16:15+01:00
2022-08-11T08:35:30+02:00
Midorian
Adott a következő kód:

Code Segment assume CS:Code, DS:Data, SS:Stack Start: mov ax, Code mov ds, ax mov di, offset ertek mov ax, 03 int 10h Bevitel: xor ax, ax int 16h mov bx,ax mov ax, 03 int 10h mov ax,bx cmp al, 27 jz Program_vege mov cx, 10 mov ah, '0' Vizsg: cmp al, ah jz Tarol inc ah loop Vizsg mov ah, 02h mov bh, 0 mov dh, 10 mov dl, 0 int 10h mov dx, offset hiba mov ah, 09 int 21h jmp Bevitel Tarol: mov [di], al inc di mov al, '$' mov [di], al mov ah, 02h mov bh, 0 mov dh, 5 mov dl, 28 int 10h mov dx, offset ertek mov ah, 09 int 21h mov ax, offset ertek add ax, 4 cmp ax, di jnz Bevitel mov ah, 02h mov bh, 0 mov dh, 7 mov dl, 0 int 10h mov dx, offset uzenet mov ah, 09h int 21h Program_vege: mov ax, 4c00h int 21h ertek db '*****$' hiba db 'Nem megengedett karakter!$' uzenet db 'Vege a bevitelnek$' Code Ends Data Segment Data Ends Stack Segment Stack Ends End Start
Ezt a következő funkcióval kell kiegészíteni:

Egészítse ki a programot úgy, hogy két négy jegyű szám bekérésére legyen lehetőség. Első lépésként valósítson meg, egy egyszerű menüt.

1 - első szám beírása
2 - második szám beírása
ESC - kilépés

Legyen lehetőség módosítani a már beírt számot, úgy, hogy újból belépünk a megfelelő menüpontba. Folyamatosan a képernyő egy bizonyos területén legyen kiírva a két négyjegyű szám. A menübe azután lépjünk vissza, ha teljesítettük mind a négy számjegy beírását. Ha nem számjegyet ütünk le, hibaüzenetként jelezzük a felhasználónak.

Ezzel próbálkoztam, nem sok sikerrel:

Code Segment assume CS:Code, DS:Data, SS:Stack Start: mov ax, Code mov DS, AX mov di, offset ertek mov ax, 03 int 10h Menud1: mov dx, offset menu1 mov ah, 09 int 21h xor ax, ax int 16h cmp al,'1' jz Bevitel cmp al,'2' jz Bevitel1 cmp al,27 jz Program_vege1 mov dx, offset hiba mov ah, 09 int 21h jmp Menud1 Bevitel1: xor ax, ax int 16h mov bx,ax mov ax, 03 int 10h mov ax,bx cmp al, 27 jz Program_vege1 mov cx, 10 mov ah, '0' Vizsg1: cmp al, ah jz Tarol1 inc ah loop Vizsg mov ah, 02h mov bh, 0 mov dh, 10 mov dl, 0 int 10h mov dx, offset hiba mov ah, 09 int 21h jmp Bevitel1 Tarol1: mov [di], al inc di mov al, '$' mov [di], al mov ah, 02h mov bh, 0 mov dh, 6 mov dl, 28 int 10h mov dx, offset ertek2 mov ah, 09 int 21h mov ax, offset ertek2 add ax, 4 cmp ax, di jnz Bevitel1 mov ah, 02h mov bh, 0 mov dh, 0 mov dl, 0 int 10h jmp Menud1 Program_vege1: jmp Program_vege Bevitel: xor ax, ax int 16h mov bx,ax mov ax, 03 int 10h mov ax,bx cmp al, 27 jz Program_vege mov cx, 10 mov ah, '0' Vizsg: cmp al, ah jz Tarol inc ah loop Vizsg mov ah, 02h mov bh, 0 mov dh, 10 mov dl, 0 int 10h mov dx, offset hiba mov ah, 09 int 21h jmp Bevitel Tarol: mov [di], al inc di mov al, '$' mov [di], al mov ah, 02h mov bh, 0 mov dh, 5 mov dl, 28 int 10h mov dx, offset ertek mov ah, 09 int 21h mov ax, offset ertek add ax, 4 cmp ax, di jnz Bevitel mov ah, 02h mov bh, 0 mov dh, 0 mov dl, 0 int 10h jmp Menud1 Program_vege: mov ax, 4c00h int 21h ertek db '*****$' ertek2 db '*****$' hiba db 'Nem megengedett karakter!$' uzenet db 'Vege a bevitelnek$' menu1 db '1 elso szam beirasa 2 masodik szam beirasa ESC kilepes$' Code Ends Data Segment Data Ends Stack Segment Stack Ends End Start
Előre is köszönöm a segítséget!
Mutasd a teljes hozzászólást!

Ez a téma lezárásra került a moderátor által. A lezárás oka: Témacím… témacím… témacím…
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd