私は数ヶ月前にアセンブリを勉強し始めました。私はUniに与えられた課題について少し助けてください。アセンブリ言語8086 - 相対量を追加できません
問題文は次のとおりです。
Being given a string of bytes, sort it ascending
私のコードは次のとおりです。
assume cs:code,ds:data
data segment
S1 db 2, 4, 2, 5, 2, 2, 4, 4 ;given string
L1 EQU $-S1
index1 db 0
index2 db 0
cont db 0
data ends
code segment
start:
mov AX,data
mov DS,AX
sort1:
inc index1
sort2:
inc index2
cmps S1[index1],S2[index2]
jg switch
jng fin1
switch:
mov S1[index1],AL
mov S1[index2],AH
mov S1[index1],AH
mov S1[index2],AL
fin1:
cmp index2,L1
JL sort2
JNL sort1
mov ax, 4C00h
int 21h
code ends
end start
問題は、私はターボデバッガでそれをコンパイルするとき、それはエラーを促し、ということができないです(正確には22,28,32,33,34,35行目)
なぜこのエラーが表示され、問題を解決するにはどうすればいいですか?あなたの問題を解決で
数回存在しないアドレシングの形式。アドレス計算の一部としてメモリから値を読み取ることは、可能な限り近くにはありません。 – harold
*「数ヶ月前」* ..もっと... *「ちょうど」*始まった。とにかく、始めに、いくつかの理論を読んでから、もう一度プログラミングしてみてください。現在のレベルでは、asmでプログラムすることはできません。ちょうど推測です。もしあなたがコンビナトリアルをうまく利用しているならば、無作為指示で100バイトを埋める可能性がどれくらいあるかを簡単に計算できます。あなたはゼロです。ターボデバッガでどのようにコンパイルしますか?私はデバッガでいくつかのコードを上書きするときにどのように単一の命令をコンパイルすることができるのか知っていますが、Turbo Assemblerが使用されているため、ソース全体をコンパイルすることはできませんでした。 – Ped7g
IMOこの最近の質問と回答は、ここで焦点を当てるべきいくつかの洞察力を与えることができます:http://stackoverflow.com/q/40719027/4271923(重複していませんが、 – Ped7g