-1
私はしばらくの間、自分のコードを修正しようとしていましたが、私はwork.Itにそれを得るように見えることはできませんエラーを教えてください:COMファイルを生成することはできません。どのように私はこれを修正することができる任意のアイデア?「エラー:COMファイルを生成できません、スタックセグメントが存在しません」を修正するには?
.model small
.386
.stack 100h
.data
inpM db "Input string: $"
input db 19 ; max allowed 20
db ? ; # char entered
db 19 dup(0) ; chars entered
output db 19 dup("$")
.code
start: mov ax, @data
mov ds, ax
mov ah, 9 ; print inpM
lea dx, inpM
int 21h
mov ah, 0Ah ; get input
lea si, input
mov dx, si
int 21h
mov cl, [si+1] ; reverse
mov ch, 0
add si, cx
inc si
lea di, output
rev: mov al, [si]
mov [di], al
dec si
inc di
loop rev
again: mov ah, 6 ; clrscr
mov al, 0
mov cl, 0
mov ch, 0
mov dl, 4Fh
mov dh, 18h
mov bh, 0Fh
int 10h
mov ah, 0
mov bh, 0
mov dl, 27h ; column
mov dh, 0 ; row
mov ah, 9 ; print output
lea dx, output
int 21h
mov bx, 20000 ; delay
l1: mov cx, 0Fh
l2: dec bx
loop l2
jnz l1
add dh, 1 ; adds 1 to row
loop again
mov ah, 4Ch
int 21h
end start
追加情報:
は、ここに私のコードです私のコードは、文字列の入力を反転させる遅延を持つ行に表示します。どのようなエラーの原因と私はそれを修正することができるでしょう見つけることを願っています。
なぜ私が求めることができます'CS = DS = ES = SS'リストから' ES'を削除しましたか? .COMファイルの場合、4つのセグメントレジスタはすべてDOSで同じに設定されます。 – Fifoernik
@Fifoernik:良い質問です。数年前、私はCOMプログラムをロードするときにESを設定しなかったDOSのバージョンがあったというジャーナル(Dr Dobbs?)の脚注を思い出してしまったように思えるかもしれません。大量の注意の中から誰かが私に電話をかけたときにそれを削除しました。私は例外を探しに行くことを決めたので、それを見つけることができませんでした。私の想像力だったかもしれない)。私は「PC Interns」がすべて私のために十分なPSPセグメントがロードされている状態であるため、それを戻しました。 –