2011-04-13 5 views
0

まずは、これまでのすべてのサポートに感謝します。ASCIIコードの解釈(アセンブリ)

完全なコードは、私が困っこれらの行を理解しているhere

を見つけることができます。私はいくつかのコメントを書いた...

行、例えば、moves:[si + 6]、alは、si + 6でマークされたメモリアドレスにalのデータを移動することを意味します(これはオフセット計算)。

次に、ループ内にsiを追加すると、40と表示されますか?

何かが私にすべてを意味します!ありがとうございました。

L0_95:   ; this segment prints ASCII code 0 - 95 
mov si,6  ; refers to the string we declared at the beginning 
mov cx,4  ; I think this is the height? 

C1A: 
; this loop adds the name of the column 
mov al,string[0] 
mov es:[si],al 
mov al,string[2] 
mov es:[si+6],al 
mov al,string[4] 
mov es:[si+24],al 
mov al,string[6] 
mov es:[si+28],al 
add si,40   ;;;; what is this line? 
loop C1A 

mov si,122   ;;;; and these three lines? 
mov bx,0 
mov cx,4 
C1B:push cx 

mov cx,24 
add si,40 
C1C:push cx 
call DEC_CONVERT 
add si,2 
call HEX_CONVERT 
add si,2 
call BIN_CONVERT 
add si,2 
call CHAR_CONVERT 
inc bx 
add si,126 
pop cx 
loop C1C 
pop cx 
sub si,3840 
loop C1B 

ret 

L96_191: 
+0

確かにあなたはgoogleかdocoを自分で見ることができますか? –

+0

3年前から他の誰かの16ビットDOSアセンブリ言語の宿題を理解するのを助けてほしいですか?たとえそれが機能するのか、どうすればわかりますか? –

+0

最初に私はここに来て感謝します。まあ...コンピュータ言語を学ぶことの一部は、他人のコードを読むことですね。 C + +やJavaやPythonとは異なり、docsは非常に有益なIMOではありません。おそらく私はまだこの時点では初心者ですから。 – CppLearner

答えて

2

add si 122、いくつかのデータのおそらくアドレスにSIレジスタを設定し、40
mov si,122により、SIレジスタを進めます。残りの2つの命令は今や自明であるはずです。

+0

urgh。右。整数を解釈する方法を忘れています。私は本当にあなたの助けに感謝します。 – CppLearner