software:diy:assembler:cdrvnet
Dies ist eine alte Version des Dokuments!
Verzeichnisnummern zählen für Cardrive im Netzwerk
.model small .code .stack 100h datum equ ´28.05.95´ ;Byte-suchen ;df = 0; es:di = Vergleichsstring; al = Vergl.Wert; cx anzahl ;ze gefunden, di = gefundene Pos. + 1 ;nz nicht gefunden, cx = 0, di = ende + 1 ; Makrodefinitionen ; Makro für den DOS-Aufruf DOS MACRO FunNr mov AH,FunNr int 21h ENDM ; --------------------------------------------------------- ; Konstanten für DOS-Funktionen oeffnen equ 3Dh erstellen equ 5Bh schliessen equ 3Eh lesen equ 3Fh schreiben equ 40h beenden equ 4Ch ausgeben equ 09h ; Ende des Vereinbarungsteils ; --------------------------------------------------------- org 100h vnrbearb proc mov ax,cs mov ds,ax MOV DX,OFFSET QuellDATEI ; Adresse des Quelldateinamens MOV AL,2 ; R/W-Zugriff DOS OEFFNEN JNC LAB_10 mov dx,offset ErrorOeffn jmp ProgEnde LAB_10: MOV cs:Haendler1,AX ; Handle speichern MOV CX,3 ; 3 Byte aus Quelldatei lesen MOV BX,cs:Haendler1 MOV DX,OFFSET vnr ; Adresse des Lesepuffers DOS LESEN JNC LAB_11 mov dx,offset ErrorLes jmp ProgEnde LAB_11: call vnrplus1 ;schreibzeiger verschieben MOV BX,cs:Haendler1 MOV DX,0 MOV CX,0 ; auf Dateianfang mov ax,4200h int 21h ;DOS Zeiger verschieben JNC LAB_13 mov dx,offset ErrorSchr jmp ProgEnde lab_13: ;geänderte VNR abspeichern MOV CX,3 ; 3 Byte schreiben MOV BX,cs:Haendler1 MOV DX,OFFSET vnr ; Adresse des Schreibpuffers DOS schreiben JNC LAB_12 mov dx,offset ErrorSchr jmp ProgEnde LAB_12: dos schliessen mov dx,offset TextOK jnc ProgEnde ;kein Fehler mov dx,offset ErrorSchlie ProgEnde: mov si,dx ; call textausgabe dos beenden ; ret vnrbearb endp ; Datenbereich Dateiarbeit Version db ´Version vom ´,Datum,10,13,´$´ ErrorZÜ db ´Abbruch durch Zeitüberschreitung!´,10,13,´$´ TextOK DB ´ Vorgang gespeichert! ´,10,13,´$´ ErrorErst DB ´FEHLER beim ERSTELLEN der Datei! ´,10,13,´$´ ErrorLes DB ´FEHLER beim LESEN der Datei! ´,10,13,´$´ ErrorOeffn DB ´FEHLER beim ÖFFNEN der Datei! ´,10,13,´$´ ErrorSchr DB ´FEHLER beim SCHREIBEN der Datei! ´,10,13,´$´ ErrorSchlie DB ´FEHLER beim SCHLIESSEN der Datei!´,10,13,´$´ QuellDatei DB ´LETZTVNR.TXT´,0 ;ZielDatei DB ´VORGANG1.XXX´,0 Haendler1 DW ? Haendler2 DW ? BytePuffer DB ? vnrplus1 proc mov dx,cs mov ds,dx mov es,dx mov al,cs:vnrr ;rechtes Zeichen call bytesuch mov al,[di] mov cs:vnrr,al cmp cl,1 ;Übertrag? jz weiterm ;ja ret weiterm: mov al,cs:vnrm ;mittleres Zeichen call bytesuch mov al,[di] mov cs:vnrm,al cmp cl,1 ;Übertrag? jz weiterl ;ja ret weiterl: mov al,cs:vnrl ;mittleres Zeichen call bytesuch mov al,[di] mov cs:vnrl,al ret vnrplus1 endp bytesuch proc lea di,konvtab ;Vergleichsziel mov cx,37 ;Anzahl cld repnz scasb jnz fehler1 ;nicht gefunden fehler1: ret bytesuch endp vnr: ;3 Byte für VNR vnrl db ´z´ vnrm db ´z´ vnrr db ´z´ konvtab db ´0123456789abcdefghijklmnopqrstuvwxyz0X´ end
software/diy/assembler/cdrvnet.1144076772.txt.gz · Zuletzt geändert: 16/02/2024 17:02 (Externe Bearbeitung)