Assembly parancssori paraméter

Ez a téma lezárásra került a moderátor által. A lezárás oka: Tud�st�r: egy t�ma - egy k�rd�s/probl�ma!
Assembly parancssori paraméter
2009-05-17T20:46:26+02:00
2009-05-17T23:15:14+02:00
2022-11-13T16:05:39+01:00
veghjoska
Sziasztok!

Kezdő vagyok a témában viszont nagyon érdekelne a válassz arra, hogy miképpen tudok parancssorból kapott paramétereket beolvasni.
Konkrétan: adott az összeeszkábált programom (lásd lejjebb), a lényeg annyi lenne, hogy ha elindítom a programot a következőképp:
programnev.exe /Vezeteknev Keresztnev
akkor kiírja, hogy a te vezetékneved: Vezeteknev
a te keresztneved: Keresztnev

Köszönöm a segítségeteket előre is!

;paraméterként megadott nevet írja ki a képernyőre

Code Segment
assume CS:Code, DS:Data, SS:Stack

Start:
mov ax, Code
mov DS, AX

mov di, 80h
mov cx, 20
mov bx, offset Nev

Keres:
mov DL, [DI]
cmp DL, "/"
jz Paramkezd ;van perjel, ez ltal param‚ter.
inc DI
loop keres
;jmp Hiba

Paramkezd:
inc di
mov bl, [di]
push bx
loop Paramkezd
jmp Kipakol

Hiba:
mov ah, 09h
mov dx, offset Hibasz
int 21h
jmp Program_vege

Bepakol:
mov al, [di]
push bx
inc di
loop Bepakol

mov cx, 20

Kipakol:
pop bx
mov [di], bl
inc di
loop Kipakol

Vege:
mov bl, '$'
mov [di], bl
inc di
pop bx
xor bx, bx
mov ah, 09h
mov dx, offset Nev
int 21h

Program_Vege:
mov ax, 4c00h
int 21h
Nev: db "A te neved: "
Hibasz: db "Nem adtad meg a nevedet igy nem tudom megmondani, hogy ki vagy!$"
Neve: db " "

Code Ends

Data Segment

Data Ends

Stack Segment

Stack Ends
End Start
Mutasd a teljes hozzászólást!
PSP (ld. 0x80, 0x81 offset)
Mutasd a teljes hozzászólást!

  • Mutasd a teljes hozzászólást!
  • Köszönöm a gyors segítségeket sikerült megoldani. De még tetézném a dolgot:)
    Azt szeretném megoldani, hogy a beolvasott paraméter betűinek sorrendjét felcserélve írja ki a a paramétert.
    Elakadtam ott, hogy a bevitt paraméter offsetjét (?) nem tudom belevarázsolni a di-be.

    forrás:
    kod SEGMENT
    assume cs:kod,ds:kod,ss:kod,es:kod

    ORG 0100h
    start: JMP eleje

    help DB 'Inditaskor kerek egy parametert!',13,10,'$'
    ;------paraméter feldolgozása
    eleje: MOV DI,80H
    MOV DL,[DI] ;paraméter hossza
    CMP DL,0
    JE uzen ;ha nincs paraméter

    XOR DH,DH
    ADD DI,DX
    INC DI
    MOV BYTE PTR [DI],'$'
    MOV DX,81H
    MOV AH,9
    INT 21H
    xor cx, cx
    mov cl, dl
    ;itt lehet a hiba
    Verem:
    mov al, [di]
    push ax
    inc di
    loop Verem

    mov cx, 10
    mov di, offset Szoveg2

    Kipakol:
    pop ax
    mov [di], al
    inc di
    loop Kipakol

    Vege:
    mov al, '$'
    mov [di], al
    inc di
    pop ax
    xor ax, ax
    mov ah, 09h
    mov dx, offset szoveg2
    int 21h

    jmp Program_Vege



    uzen: MOV AX,CS
    MOV DS,AX ;DS átállítása
    LEA DX,help
    MOV AH,9
    INT 21h

    Program_vege: MOV AH,4ch
    INT 21h

    Szoveg2: db " "
    Vegeszoveg: db "Ez a program vege!$"
    kod ENDS
    END start
    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: Tud�st�r: egy t�ma - egy k�rd�s/probl�ma!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd