私は本書からこのアセンブリプログラムを勉強していましたが、私はそれについて質問します。このプログラムの目的は、単にstring1をstring2にコピーすることです。私の質問は、次の2つの命令に関する:アセンブリーストリング命令DSとESをリアルモードで登録
mov AX,DS
mov ES,AX
私はそれらなしで参照、プログラムが正しく動作しませんが、私はそれはあなたが必要なすべてのだろう、string2のにESI
string1とするとEDI
を指すことによって考えているだろうする。次に、ESI
とEDI
を増分して1文字ずつ移動します。 DS
の正確な内容と、それをES
に移動する必要があるのはなぜですか?
.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