ファンクションコール 0AH

高級言語プログラマのためのアセンブラ入門』 171ページあたり

ファンクションコール 0AH は、「コンソールからの文字列入力」

        EXTERN  PUT_AX:NEAR

CODE    SEGMENT PUBLIC
        ASSUME  cs:CODE,ds:DATA,ss:STK
START:
        mov     ax,DATA
        mov     ds,ax
        ;-----------------------codeここから
        mov     BUF,3
        mov     dx,OFFSET BUF
        mov     ah,0AH
        int     21H

        mov     al,BUF
        call    PUT_AX

        mov     al,BUF[1]
        call    PUT_AX

        mov     al,BUF[2]
        call    PUT_AX

        mov     al,BUF[3]
        call    PUT_AX

        mov     al,BUF[4]
        call    PUT_AX
        ;-----------------------codeここまで
        mov     ah,4CH
        int     21H

CODE    ENDS

DATA    SEGMENT
        ;-----------------------dataここから
BUF     DB 5 DUP(?)
        ;-----------------------dataここまで
DATA    ENDS

STK     SEGMENT STACK
        DB      100H DUP(?)
STK     ENDS
        END     START

(PUT_AX は d:id:noritsugu:20071202:MASM のをリンクして使用)
で、「A」「B」「改行」

0A03
0A02
0A41
0A42
0A0D
  • 3文字目は「改行」しか入力できない?
  • 最初「mov ax,BUF」とか書いて怒られた(エラーメッセージ「error A2070: invalid instruction operands」)。
  • ファンクションコール 09H で出力できないと思ったら、「$」終端が必要だった…