私の情報はここから来ています。この割り当てでは、20 文字以内で読み取り、それらの文字を大文字に変換し、入力を大文字として出力するプログラムを要求します。
int21/AH=0ah からの入力にアクセスする方法がわかりません。上記のリンクを理解しない限り、これ以上正確な質問をすることはできません。誰か説明できますか?また、違いがある場合はTASMを使用しています。また、これをfreedosでテストしています。
更新1:
わかりました、あなたの助けのおかげで、割り込みを設定する必要があり、動作する方法を理解できたと思います.
セットアップ: このバッファを存在させたい ds:dx を指定する必要があります
ds:dx を 20 に設定する必要があります (これにより、バッファーが保持できる最大文字数が設定されます)
ds:dx+1 を 0 に設定する必要があります (これにより、読み込む最小文字数を何らかの方法で設定できると思います)。
実際に int21/AH=0ah を呼び出します。これは ds:dx に移動し、プリセット バイトを解釈します。入力を待っている間、プログラムを停止します
int21/AH=0ah は ds:dx+2+n から私の入力を埋めます (n は '\r' を含む入力文字数です)
私の質問は今、どうすればこれを行うことができるかです。x86 Assembly Language Reference をもう一度調べましたが、まだ役立つものを見つけることができませんでした。
これまでに入手したコード
assume cs:code,ds:code
code segment
start:
mov ax,code ;moves code segment into reg AX
mov ds,ax ;makes ds point to code segment
mov ah,0ah
int 21h
mov ax,1234h ;breakpoint
mov ah,9
mov dx,offset message
int 21h
endNow:
;;;;;;;;;;ends program;;;;;;;;;;
mov ah,0 ;terminate program
int 21h ;program ends
message db 'Hello world!!!',13,10,'$'
code ends
end start