2014-11-23 4 views
0

특정 메모리 위치/주소에서 데이터/문자열을 읽고 쓸 수 있습니까? 메신저 8086에서 링크 된 목록을 만들 계획이지만 특정 메모리 주소에서 데이터를 읽는 방법과 동일한 변수를 사용하여 다른 메모리 주소에 데이터를 저장하는 방법을 몰라. 이것이 가능한가? 그렇다면 어떻게?어셈블리 언어로 연결된 목록 만들기 8086

+0

이것은 나에게 의미가 없습니다. 대안은 무엇입니까? "어디서나 무작위로"쓰십시오? – harold

+0

배열을 사용하는 것이 대안이지만, 이것이 8086에서 가능할 지 궁금하다. – ryuuuuuusei

+0

배열은 독서와 쓰기의 특별한 경우 일 뿐이며, 어디서나 당신이 느끼는 것처럼 시작하고 그들이 느끼는 어떤 것이 든 색인을 가지고있다. 실제 배열은 없으며, 단순한 방식으로 사용하기 위해 특정 방식으로 사용하는 메모리입니다. – harold

답변

0

당신은 다음과 같은 요소를 연결할 수 : 프로그램이 새로운 요소를 삽입합니다

jmp start 
element0 db 10 
element1 db "jsdafélasjfdélasjd" 
element2 db "lkjfasljf" 
element3 db 12, 34 
element4 db "asfd" 
;etc. 
links: 
dw element0 
dw element1 
dw element2 
dw element3 
dw element4 
start: 
push cs 
pop ds 
lea si, links 
add si, (3*2) 
;si is now set to the offset of element3 

, 목록의 종료 후 충분한 자리를 떠날 것이 중요 할 것입니다.

+0

링크 사용 방법에 대한 링크가 있습니까? 이 지시에 상당히 새로운 것임. – ryuuuuuusei

+1

링크는 문자열 또는 숫자의 시작 부분의 오프셋입니다. 매번 당신은 출력 변수에 저장되는 문자열을 할 때, 당신은 ", MOV시 nameofthevariable 오프셋"는 명령이 가장 컴파일러 (이전 오프셋 을로드 할 수 \t 또는 \t "숨기려 SI, nameofthevariable는 " 우리가 레지스터시 우리가 레지스터 디를 사용하여 변수를 저장할 수를 사용하십시오 변수를 읽을 수있는 변수가 저장되는 메모리의 장소.의 수 오프셋. 오프셋은 항상 입니다 자신의 세그먼트에 고정 된 장소. –

0

물론 것은, 예를 들어

mov di, [di] 
mov di, [di] 

는 (그렇지 않은 경우, 일정한 오프셋을 추가)을 next 링크는 노드의 첫 번째 일이 링크 된리스트를 통해 장소의 몇 가지를 이동합니다.

여기서 큰 문제는 해당 노드를 할당하고 할당을 해제하는 것입니다.