入出力

「入出力」の編集履歴(バックアップ)一覧に戻る

入出力 - (2009/08/26 (水) 23:33:52) のソース

*システムコール
***文字の出力

例)
    mov ah, 02h
    mov dl, 31h
    int 21h

***文字列の出力

例)
    mov ah, 09h
    mov dx, msg  ;出力する文字列の先頭アドレスをDXレジスタにセットする
    int 21h

***文字の入力

例)
    mov ah, 08h
    int 21h

[[sample>http://makotof.unfuddle.com/svn/makotof_android/assembler/Assembler101/inpc.asm]]
[[sample>http://makotof.unfuddle.com/svn/makotof_android/assembler/Assembler101/inpch.asm]]

***文字列の入力

例)
    mov ah, 0Ah         ;キーボードからの文字列入力
    mov dx, buf
    mov byte[buf], 20h  ;バッファの長さ
    int 21h

※入力された文字列はバッファの3バイト目以降に入る。バッファの2バイト目には入力された文字列が入る

[[sample>http://makotof.unfuddle.com/svn/makotof_android/assembler/Assembler101/inps.asm]]

***ファイルからの読み込み

例)
    mov dx, sfile    ;DX=ファイル名文字列
    mov al, 0        ;モード(AL:0 = 読み出し, 1 = 書き込み, 2 = 読み書き)
    mov ah, 3Dh      ;ファイルオープンを指定
    int 21h

sfile db "srcfile.txt", 0  ;ファイル名 (0で終わる文字列)
ファイルが開くとAXレジスタにファイルハンドルが入る

    mov [fh], ax      ;ファイルハンドル

データを読み込むためには、AHレジスタを3FhにしてINT21を実行する
    mov bx, [fh]    ;ファイルハンドル
    mov dx, buf     ;DX=バッファ
    mov cx, 1       ;読み込むバイト数
    mov ah, 3Fh     ;読み込む
    int 21h         ;読み込む (結果はCF:0=成功, 1=エラー)

読み込みが成功すると、読み込んだ文字がバッファに、読み込んだバイト数がAXレジスタに保存される

[[sample>http://makotof.unfuddle.com/svn/makotof_android/assembler/Assembler101/sample.asm]]

***ファイルへの書き込み

例)
    dfile db  "destfile.txt", 0        ;ファイル名 (0で終わる文字列)
    
    ;入力ファイルオープン
    mov dx, sfile
    mov al, 0          ;モード(AL:0=読み出し, 1=書き込み, 2=読み書き)
    mov ah, 3Dh        ;ファイルオープンを指定
    int 21h
    jc  endquit        ;結果は(CF:0=成功, 1=エラー)

    mov [ofh], ax

新しいファイルを作成するには、CXレジスタに0を設定し、AHレジスタを3ChにしてINT21を実行する

    ;出力ファイルを作成
    mov dx, dfile      ;DX=ファイル名文字列
    mov cx, 0          ;通常ファイルを指定
    mov ah, 3Ch        ;ファイル作成
    int 21h
    jc  endquit        ;結果は(CF:0=成功, 1=エラー)
    mov [ofh], ax

ファイルにデータを書き込む場合は、AHレジスタに40hを設定してINT21を実行する

    mov bx, [ofh]      ;出力ファイルハンドル
    mov dx, buf        ;DX=バッファ
    mov cx, 1          ;書き込むバイト数
    mov ah, 40h        ;書き込みを指定
    int 21h            ;結果は(CF:0=成功, 1=エラー)
                       ;AX=書き込んだバイト数
[[sample>http://makotof.unfuddle.com/svn/makotof_android/assembler/Assembler101/bcopy.asm]]
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。