Witam. Jestem tu nowy i od razu przychodze z duzym dla mnie problemem a mianowicie pierwsze zadanie z asemblera. O ile z jednym programem poradzilem sobie sam to z tym nie dam rady. Jest za duzo rejestrow i petli i nie mam pojecia jak to poprawic. Wkleje tutaj surowy kod bez moich poprawek (te proste bledy oczywiscie poprawilem sam ale wkleje niezmieniony). Bardzo prosze kogos o pomoc.
; Uwagi : Program dokonujacy odbicia lustrzanego tekstu o nieznanej ;
; dlugosci ;
; ;
;=============================================================================;
.MODEL SNALL
Kod SEGM
Tekst DW "$Jakis napis$
Dane ENDSEGMENT
Kod SEGM
ASSUME CS:Dane, DS;Kod, SS:Stos
Start:
mov SEG Kod, ax
mov cs, ax
mov si, di
mov si, OFSET Napis
xor cx, cx
Petla1:
cmp WORD PTR [cx], '$'
jne Sprawdz
inc di
inc cx
inc cx
jmp Start
Sprawdz
or cx, cx
jnz Koniec
shr cx, 2
adc cx, 0
dec di, 1
Petla2:
mov [si], al
mov bh, [di]
mov [bx], ah
mov al, di
dec si
lop Petla2
inc di, 1
mov ah, 09h
int 21h
mov dx, SEG Tekst
Kon:
mov ax, 4C05h
int 21h
Kod ENDSEG
Stosik SEGMENT SLACK
DB 100h DUP {?}
Stos ENDSEG
END Stop
a tu to co sam zrobilem ale prosze sie tym nie sugerowac bo moglem zrobic jeszcze bledy
Uwagi : Program dokonujacy odbicia lustrzanego tekstu o nieznanej ;
; dlugosci ;
; ;
;=============================================================================;
.MODEL SMALL
Dane SEGMENT
Tekst DB "Jakis napis.$"
Dane ENDS
Kod SEGMENT
ASSUME DS:Dane, CS:Kod, SS:Stosik
Start:
mov ax, SEG Dane
mov ds, ax
mov si, di
mov si, OFFSET Tekst
xor cx, cx
Petla1:
cmp WORD PTR [si], '$'
je Sprawdz
inc si
inc cx
inc cx
jmp Start
Sprawdz:
xor cx, cx
jnz Koniec
shr cx, 2
adc cx, 0
dec di
Petla2:
mov [si], al
mov bh, [di]
mov [bx], ah
mov al, di
dec si
loop Petla2
inc di
mov ah, 09h
int 21h
mov dx, SEG Tekst
Koniec:
mov ax, 4C00h
int 21h
Kod ENDS
Stosik SEGMENT STACK
DB 100h DUP {?}
Stosik ENDS
END Start