imテキストファイル全体をバッファに読み込んでコンソールに表示するアセンブリプログラムで作業しています。一度に80の幅* 25の高さのdossboxを使用しているので、24行を表示します(各行は最大80の長さを持っています)ので、ユーザーがテキストをスクロールできるようにユーザー入力を待ちます。アセンブリ8086 - あるバッファを別のバッファにコピー
各行の先頭に行番号を追加したいので、2番目のバッファを作成して最初の1バイトから1by1をコピーすることができたと思います。改行を見つけると、行番号をバッファに書き込んでから、バッファ全体に進むまで続けます。しかし、あるバッファから別のバッファにコピーする私の方法は悪いです。
だから私はBUFFBする ブッファをコピーしたい:
mov di,OFFSET BUFFB ;so i set di to the beggining of bufferB
mov si,Pos ;Pos is my position in the first buffer
lea bx,BUFFA[si] ;move the content of buffA to bx , i think the problem is here
mov [di],bx ;move to the addres of di the content of bx
inc di
inc Pos
問題は、私は第2のバッファの内容をプリントアウトしたときに、私は(順位と同じ)、SIの値をコピーすることを見つけるである私ににbufferA [si]の内容ではありません。このコードを修正するにはどうしたらいいですか?
編集1:
だから、解決策は、MOVを使用していると、アルは登録:
mov si,Pos
mov al,[BUFF + si]
mov [di],al
inc di
'lea'(ロード拡張アドレス)は、コンテンツの引数ではなく_address_をロードします。実際にはここに 'mov 'が必要です。 –
あなたの速い答えはtyですが、mov bx、オフセットBUFFB [si]は法的な操作ではありません – Shaoe
'offset'部分を削除します。 –