PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Hilfe bei Programm mit Assembler / debug


axcel
18.06.2002, 23:31
Hi Leute!

Ihr seid meine letzte Hoffnung!

Muss für mein Studium ein Programm in Assembler mit dem Dos-Tool debug schreiben. Es geht in etwa um folgendes:

Text soll ausgegeben werden und dem User mitteilen, das er zwischen zwei "Codierungsvariaten" wählen soll. Dann soll der User seinen Text eingeben und das Ende der Eingabe mit einem $-Zeichen bestätigen. Nach zwei harten Returns soll der Text Codiert auf dem Bildschirm erscheinen...

Codierung erfolg durch verschieben der ASCII-Zeichen um 2 nach oben bzw. unten.

Und ich hab keine Ahnung... :(

Kennt jemand evtl. eine Webseite wo sowas vernünftig erklärt ist?

Thx & ciao axcel


Felix Kaiser
19.06.2002, 02:13
WebSeiten sind das rar, wenn du Glück hast findest du mit Google oder MetaGar ein ähnliches Referat auf irgendeiner Uniseite. Prinzipiell könnte ichs lösen, aber nicht mit DEBUG, keine Ahnung wie man mit dem Teil umgeht, ich find scheiße :) Einen fertigen Assemblerquellcode könnte ich schreiben ... bzw. dabei helfen, aber das würde dir wohl nix nützen? :(

axcel
19.06.2002, 07:12
Hi!
Original geschrieben von Felix Kaiser
aber nicht mit DEBUG, keine Ahnung wie man mit dem Teil umgeht, ich find scheiße :)
Danke, seh ich genauso! :D
Einen fertigen Assemblerquellcode könnte ich schreiben ... bzw. dabei helfen, aber das würde dir wohl nix nützen? :(
Das würde mir schonmal deutlich nützen! Hab ich wenigstens etwas an dem ich mich langhangeln kann...

DANKE dir für das Angebot

ciao axcel ;)

Felix Kaiser
19.06.2002, 15:27
Eigentlich mache ich sowas nicht, kompletten Source schreiben, aber bei dir mach ich mal eine Ausnahme und zwar nur aus dem Grund, dass es mal wieder einwenig leichtes Assemblertraining ist. Auch wenns schrottbillig ist :mauer:

.model small
.stack 800h
.code
.386p

entry proc near
push cs
pop ds
call DosMain
mov ax,4C00h
int 21h
entry endp

CType db 0
TextBuf db 60 dup (?)
msg1 db 'Kodierungstyp? [1,2] $'
msg2 db 13,10,'Geben Sie nun den Text ein: $'
msg3 db 13,10,'Kodierte Eingabe: $'

DosMain proc near
push offset msg1
call StdOut ; Meldung ausgeben
KeyIn1: call ReadKey ; Auf Eingabe warten
cmp al,'1'
je short j1
cmp al,'2'
jne short KeyIn1
inc [CType]
j1: mov ah,0Eh
int 10h ; Eingabe auf Bildschirm ausgeben
push offset msg2
call StdOut ; Meldung ausgeben
push 60
push offset TextBuf
call StdIn ; Texteingabe via STDIN
mov si,offset TextBuf
mov bx,ax
mov byte ptr [si+bx],'$'
push si
call Crypt
push offset msg3
call StdOut
push offset TextBuf
call StdOut
ret
DosMain endp

StdOut proc near _ofs:word
enter 0,1
mov ah,9
mov dx,_ofs
int 21h
leave
ret 2
StdOut endp

_StdIn db 'CON',0

StdIn proc near _ofs:word, _maxlen:word
enter 0,1
mov ax,3D00h
mov dx,offset _StdIn
int 21h
mov bx,ax
mov ah,3Fh
mov cx,_maxlen
mov dx,_ofs
int 21h
leave
ret 4
StdIn endp

ReadKey proc near
xor ah,ah
int 16h
ret
ReadKey endp

Crypt proc near _ofs:word
enter 0,1
mov si,_ofs
cld
cl1: lodsb
cmp al,'$'
je short cj1
cmp al,' '
jb short cl1
push ax
cmp [CType],1
je short cj2
call Crypt1
jmp short cj3
cj2: call Crypt2
cj3: mov bx,0FFFFh
mov [si+bx],al
jmp short cl1
cj1: leave
ret 2
Crypt endp

Crypt1 proc near _value:byte
enter 0,1
mov al,_value
add al,2
leave
ret 2
Crypt1 endp

Crypt2 proc near _value:byte
enter 0,1
mov al,_value
sub al,2
leave
ret 2
Crypt2 endp

end entry

Mit Turbo Assembler kein Problem das zu compilieren und zu linken.

axcel
20.06.2002, 12:21
Ich danke dir vielmals!

Das du normalerweise keinen kompletten Code schreibst ist schon klar und habe ich auch nicht erwartet... Freue mich aber über die Ausnahme um so mehr!!!

Thx axcel

Nukacola
20.06.2002, 21:35
Mit Debug wird der source aber nicht klappen.
Uberings geht das mit dem A-Kommando von debug
kleines beispiel:
debug.exe
-a
????:???? hier dann den code hin
alles mühsam abtippen oder mit trick
datei erstellen bsp test.asm

a
code

r
100 hier die anzahl der zu compilierenden bytes angeben
n test.com
w
q

und debug aufrufen mit debug < test.asm >test.lst

naja und nur 8086 befehle benutzen

bye

Messiah_of_Death
25.06.2002, 23:26
wua.. Debug ..das ding is gefährlich

ich hab mal damit rumgespielt und mir mein ganzes DOS früher zerschossen...... (schrottding hat auch keine "Kindersicherung")

?! muss man Debug können für ein Studium ??! :eek:

Felix Kaiser
26.06.2002, 00:29
Wenn ja ist Studium dumm, weil ein solches Tool braucht heutzutage keine Sau mehr, außer halt im Studium vielleicht :D

axcel
26.06.2002, 15:50
Ja - man muss debug können, aber nur in den Grundzügen! Studiengang nennt sich Mechatronik und im Fach Computertechnik gehört auch eine Aufgabe Assembler mit debug dazu...

ciao axcel ;)

Nukacola
27.06.2002, 01:55
upps fehler!!! die zeile

r
das muß
rcx
heißen..

verdammt..

aber wie schon gesagt wer benutzt noch debug ???
kenne mich da nur aus weil ich früher mein asm proggis
immer mit dem sid86 von dr getestet habe..

bye