Einzelnen Beitrag anzeigen
Alt 29.04.2005, 21:49   #9 (permalink)
Qndre
Stickstoff Junkie
 

Registriert seit: 06.07.2004
Beiträge: 3.814

Qndre wird schon bald berühmt werden

Standard AW: Assembler Programm gesucht !

sicher assembler, hier ist der source:
Code:
.286p
MaxString Equ 81 
Code Segment Byte Public
Code Ends
Data Segment Word Public
Data Ends
Stak Segment Word Stack
DW  256 DUP (?)
Stak Ends
Fake Segment Para Public
Fake Ends
Code Segment
Assume CS:Code,DS:Data,ES:Nothing,SS:Stak
Push ES
Mov  BX,Seg Data
Mov  DS,BX
Push DS
Push DS
Mov  DI,0
Lea  BX,ES:[81h]
GetTail:
Mov  AL,ES:[BX]
Cmp  AL,13
Je   GotTail
Mov  Command$[DI],AL
Inc  DI
Inc  BX
Jmp  GetTail
GotTail:
Mov  Command$ [DI],0
Pop  DS
Pop  ES
Cld
Mov  SI,Offset Command$ + 1
Mov  DI,Offset Command$
Mov  CX,80
Rep  Movs Byte Ptr [DI],Byte Ptr ES:[SI]
Pop  ES
Mov  BX,Seg Data
Mov  DS,BX
Mov  BX,Seg Fake
Mov  AX,CS
Sub  BX,AX
Add  BX,16
Mov  AH,4AH
Int  21h
Push DS
Pop  AX
Mov  ES,AX
Mov  DefSeg,AX
Mov  $DataSeg,AX
Call GetCursor
Mov  SI,Offset COMMAND$
Call Coutstring
Call SetCursor
Call LineFeed
Mov  AL,0
Mov  AH,4Ch
Int  21h
QuitAPP:
Mov  AH,4Ch
Xor  AL,AL
Int  21h
GetCursor Proc Near
Mov  AH,3
Xor  BH,BH
Int  10h
Xor  AX,AX
Mov  AL,DL
Inc  AL
Mov  $Xcur,AX
Mov  AL,DH
Inc  AL
Mov  $Ycur,AX
Ret
GetCursor Endp
SetCursor Proc Near
Mov  DX,$Xcur
Dec  DL
Mov  AX,$Ycur
Mov  DH,AL
Dec  DH
Mov  AH,2
Int  10h
Ret
SetCursor Endp
Len Proc Near
Push CX
Push SI
Push DI
Mov  DI,SI
Xor  AL,AL
Mov  CX,0ffffh
Cld
Repnz Scasb
Not  CX
Dec  CX
Mov  AX,CX
Pop  DI
Pop  SI
Pop  CX
Ret
Len Endp
Coutstring Proc Near
Call Len
Push AX
Mov  CX,AX
Cmp  CX,0
Jle  PS_3
Mov  BX,$Attr
Mov  AX,$Ycur
Mov  DI,$Xcur
Push DS
Push ES
Dec  AX
Dec  DI
Cmp  DI,0
Jg   PS_1
Xor  DI,DI
PS_1:
Mov  DX,80
Mul  DX
Add  DI,AX
Shl  DI,1
Mov  AX,0B000H
Mov  ES,AX
Mov  AH,0FH
Int  10H
Cmp  AL,07H
Je   PS_2
Mov  AX,0B800H
Mov  ES,AX
PS_2:
Cld
Movsb
Mov  ES:[DI],BL
Inc  DI
Loop PS_2
Pop  ES
Pop  DS
PS_3:
Pop  AX
Add  $Xcur,AX
Ret
Coutstring Endp
LineFeed Proc Near
Mov  $Xcur,1
Inc  $Ycur
Cmp  $Ycur,26
Jne  CrLf_1
Dec  $Ycur
CrLf_1:
Mov  DX,Offset $CrLf
Mov  AH,9
Int  21h
Mov  BX,$Xcur
Mov  DL,BL
Dec  DL
Mov  BX,$Ycur
Mov  DH,BL
Dec  DH
Xor  BX,BX
Mov  AH,2
Int  10h
Ret
LineFeed Endp
Code Ends
Data Segment
$Xcur        DW 1
$Ycur        DW 1
$Attr        DW 7
$CrLf        DB 13,10,'$'
$CrLf2       DB 13,10,0
FgColor      DW 7
BgColor      DW 0
Err          DW 0
DefSeg       DW 0
$DataSeg     DW 0
$Empty       DB 0,0
$Var0        DW 0
$Var1        DW 0
$Var2        DW 0
$Var3        DW 0
Command$     DB 81 DUP(?)
Data Ends
End
Gibt übergebene Befehlzeilenargumente aus. Wenn man das also beispielsweise zu einer "argument.com" assembliert und dann im DOS-Promt "argument hallo welt" eingibt schreibt's "hallo welt", wenn man "argument 123test" eingibt schreibt's "123test" - hab ich wie gesagt eine Komponente in einer Client/Server-Konstillation mit ersetzt und habe dann monitoren können, welche Argumente über Parameter beim Call übergeben werden.

Geändert von Qndre (29.04.2005 um 22:08 Uhr)
Qndre ist offline   Mit Zitat antworten