Asembler :: jak usuwać znaki.

0

Witam,
nie wiem czy dobrze zatytułowałem topic ale mam pewien problem z asemblerem, dopiero co zaczęliśmy asemblera, i póki co ciężko idzie nauka tego. No więc tu jest kod:

org 100h

		mov ah, 9        ; funkcja wyswietlania na ekran
		mov dx, jak_masz ; co wyswietlic
		int 21h          ; wyswietl
		
		mov ah, 0ah      ; funkcja pobierania danych z klawiatury
		mov dx, imie     ;bufor na dane
		int 21h          ;pobierz dane
		
		mov ah,9
		mov dx, czesc
		int 21h          ; wyswietl napis "Cześć"
		
		mov ah,9
		mov dx, imie+2   ; adres wpisanych danych
		int 21h          ; wyswietl wpisane dane
		
		mov ax, 4c00h
		int 21h
		
	jak_masz db "Jak masz na imie? $"
	imie db 20           ; maksymalna dlugosc imienia
	     db 0            ; tu dostaniemy ile znakow pobrano
	     times 22 db "$" ; miejsce na dane
		
		 
	czesc db 10,13,10,13, "Czesc $"

moje pytanie, chyba proste ale nie mogę znaleźć odpowiedzi, jak usunąć 7 pierwszych liter wyświetlanego zdania ? Tak żeby np. zamiast "Cześć Zdzisek" bylo "dzisek".

pozdrawiam

0

Tutaj:

mov dx, czesc ; ładujemy do dx adres pod którym jest czesc
mov ah,9 ;tryb wypisywania danych z dx
int 21h ;wypisanie danych 

Jeśli chcesz żeby wypisywało coś co jest w innym miejscu w pamięci to musisz to przekazać do dx. W tym przypadku mozesz zrobić po prostu:

mov dx, czesc ; ładujemy do dx adres pod którym jest czesc
add dx,7 ;przesuwamy się o 7 bajtów do przodu
mov ah,9 ;tryb wypisywania danych z dx
int 21h ;wypisanie danych 
0
org 100h

		mov ah, 9        ; funkcja wyswietlania na ekran
		mov dx, jak_masz ; co wyswietlic
		int 21h          ; wyswietl
		
		mov ah, 0ah      ; funkcja pobierania danych z klawiatury
		mov dx, imie     ;bufor na dane
		int 21h          ;pobierz dane
		
		mov dx, czesc ; ładujemy do dx adres pod którym jest czesc
		add dx,7 ;przesuwamy się o 7 bajtów do przodu
		mov ah,9 ;tryb wypisywania danych z dx
		int 21h ;wypisanie danych 
		
		mov ah,9
		mov dx, imie+2   ; adres wpisanych danych
		int 21h          ; wyswietl wpisane dane
		
		mov ax, 4c00h
		int 21h
		
	jak_masz db "Jak masDzz na imie? $"
	imie db 20           ; maksymalna dlugosc imienia
	     db 0            ; tu dostaniemy ile znakow pobrano
	     times 22 db "$" ; miejsce na dane
		
		 
	czesc db 10,13,10,13, "Czesc $"

zrobiłem jak napisałeś, aczkowliek teraz się coś bardzo dziwnie zakreciło i wychodzi to tak: http://imageshack.us/f/838/cosik.png/

0

Nie patrzyłem jak ty to tam zrobiłeś, mea culpa. Ty jesteś poważny w ogóle? Ja myślałem że masz pod tą etykietką czesc całe zdanie "cześć Zdzisiek". A ty chcesz zrobić coś zupełnie innego. Albo wpiszesz to imie do tej etykietki (odpowiednio przesuwając sobie wskaźnik w buforze za napis "czesc") albo w ogóle nie wypisuj "czesc" (bo nie łapie się w tych 7 znakach) a wypisz tylko imie przesunięte o ileśtam.
Zresztą po co w ogóle coś takiego pisać? Jakie to ma niby zastosowanie? o_O

1 użytkowników online, w tym zalogowanych: 0, gości: 1