-2
.model small
.stack
.data
msg1 db "Enter string max of 9 characters: $"
msg2 db 13,10, "Enter a number: $"
msg3 db 13,10, "Midstring: $"
strNine db "$"
num db 0,"$"
mid db "$"
varName label byte
maxL db 10
actL db 0
actCont db 10 dup("?")
.code
mov ax,@data
mov ds,ax
;-------------------- Input String ---------------------
mov ah,9
lea dx,msg1
int 21h
mov ah,0ah
int 21h
mov strNine,al
mov bh,strNine
;-------------------- Number ---------------------
mov ah,9
lea dx,msg2
int 21h
mov ah,1
int 21h
mov num,al
mov bl,num
;-------------------- Midstring ---------------------
mov ah,9
lea dx,msg3
int 21h
mov ah,4ch
int 21h
END
アセンブリ言語が初めてのので、中弦を見つける必要があります。アセンブリ言語:プログラムを完成させて中芯を完成させる
予想される動作:
Enter max of 9 String: helloword
Enter a number: 3
Midstring: lloword
先頭のスペース、HおよびEは、ユーザが理由番号入力の削除されなければなりません。
私のしましたが、もらって一部だけは、私は、インデックス
のために使用されているBXメモリに保存されている文字列と番号であるユーザからの入力を取得することです私はいくつかのヒント/ガイドを必要としますプログラムを終了する皆さんから。
SOはガイドを求めるのに適していませんが、http://stackoverflow.com/tags/x86/infoにはドキュメントやガイドへのリンクがたくさんあります。ヒント:使用しているシステムコールのドキュメントを確認してください。 DOSのread-string関数がバッファへのポインタを必要としていることを確かめてください。あなたの現在のプログラムが文字列全体を印刷することさえ疑う。末尾の部分文字列は特殊文字で終わる文字列では些細なことです。開始点へのポインタを渡すだけで、同じ場所で終わります。 –
@PeterCordesありがとうございます。申し訳ありませんがヒントやガイドを求める。今はレジスタや16進コードの使い方を今混乱させるだけです。 –
もしあなたがah = code DOSシステムコールを意味するのであれば、どのシステムコールが何をしているのかに関するdocsのDOS割り込みリストをチェックしてください。真ん中の文字列の問題はポインタの数学です。 –