저는이 책에서이 어셈블리 프로그램을 연구했으며 그것에 대해 질문이 있습니다. 이 프로그램의 목적은 단순히 string1을 string2에 복사하는 것입니다. 내 질문은 다음과 같은 두 가지 지시 사항에 관한 것이다조립 문자열 지침 DS 및 ES를 리얼 모드로 등록하십시오.
내가 그들없이 볼mov AX,DS
mov ES,AX
, 프로그램이 제대로 작동하지 않는,하지만 난 문자열 1을 ESI
을 지정하여 생각이나 했 겠어요 및 EDI
그 모든 당신이 필요로하는 것, 문자열 2 할 할 것. 그런 다음 ESI
과 EDI
만 증가시키고 문자 단위로 이동하십시오. DS
은 정확히 무엇을 보유합니까? ES
으로 이동해야하는 이유는 무엇입니까? EDI
사용 ES:EDI
를 사용
.DATA
string1 db 'The original string',0
strLen EQU $ - string1
.UDATA
string2 resb 80
.CODE
.STARTUP
mov AX,DS ; set up ES
mov ES,AX ; to the data segment
mov ECX,strLen ; strLen includes NULL
mov ESI,string1
mov EDI,string2
cld ; forward direction
rep movsb
이 16 비트 코드입니까? 만약 당신이 정말로 CX, DS, DI를 사용해야합니다. 그리고 나는 당신이'mov ESI, offset string1'과'mov EDI, string1'을 의미한다고 가정하니? –
이것은 책에서 나 왔으며 책에서 지정하지 않았습니다. – Rubiks
windows dosbox 및 nasm – Rubiks