    .8085
    ;
    ; 注意  このプログラムのコメントまで含めての丸ごとコピーは、やめてくだされ
    ;
    ; 課題1
    ;
    aseg
    ORG     8000H
    
    LXI     B,9000H ; 加算データ1
                    ; 9000H-9007H
    LXI     D,9100H ; 結果を格納するアドレス
                    ; 9100H-9107H
    LXI     H,9080H ; 加算データ2
                    ; 9080H-9087H

    LDAX    B   ; Aレジスターへ(BC)アドレスから取り出し
    ADD     M   ; A = A + (HL)  (HL)は、HLの指すアドレスのこと
                ; 繰り上がったとき、CY=1になる。
                ; CYとは、キャリーフラグのこと。
    STAX    D   ; Aレジスターの内容を(DE)アドレスへ保存する
    ; 次のデータへポインターを移動する
    INX     B   ; 加算データアドレスに1を足す
    INX     D   ; 結果を格納アドレスを1増やす
    INX     H   ; 加算データアドレスを1増やす
    ;
    ; ここで一区切り
    ;
    LDAX    B
    ADC     M   ; よく見ると、ADCとなっている。CYは、1か0である。前回のADD命令
                ; の結果、繰上があったら、CY=1になっている。なかったら、CY=0に
                ; なっている。
                ; A = A + (HL) + CY
                ; (HL)は、HLの指すアドレスの意味である。慣れましょう。よく使う
                ; 表現です。(XXX)は、XXXのアドレスの内容という意味になります。
                ; (8000H)なら、8000Hアドレスの内容をさします。
                ; この命令を実行した結果、またしてもCYは変化する。変化具合は
                ; 前記と同じである。
    STAX    D
    INX     B
    INX     D
    INX     H
    ;
    ; 2
    ;
    LDAX    B
    ADC     M
    STAX    D
    INX     B
    INX     D
    INX     H
    ;
    ; 3
    ;
    LDAX    B
    ADC     M
    STAX    D
    INX     B
    INX     D
    INX     H
    ;
    ; 4
    ;
    LDAX    B
    ADC     M
    STAX    D
    INX     B
    INX     D
    INX     H
    ;
    ; 5
    ;
    LDAX    B
    ADC     M
    STAX    D
    INX     B
    INX     D
    INX     H
    ;
    ; 6
    ;
    LDAX    B
    ADC     M
    STAX    D
    INX     B
    INX     D
    INX     H
    ;
    ; 7
    ;
    LDAX    B
    ADC     M
    STAX    D
    INX     B
    INX     D
    INX     H
    ; 終了
    HLT     ; この命令を実行すると、コンピュータが本当に止まる (CPU停止)
    
    ORG     9000H
    ; 010203040506FEFF を入れる
    DB      0FFH    ; 一バイトデータを入れる
    DB      0FEH    ; Hがつくのは、16進数
    DB      6
    DB      5
    DB      4
    DB      3
    DB      2
    DB      1       ; こっちのほうが、上の桁ね。足す順番を考えて。
    
    ORG     9080H
    ; 0101010101010101
    DB      01  ; 1
    DB      01  ; 2
    DB      01  ; 3
    DB      01  ; 4
    DB      01  ; 5
    DB      01  ; 6
    DB      01  ; 7
    DB      01  ; 8
    
    ORG     9100H
    ; 結果を入れる
    ; プログラムを実行すると、0203040506080000になるはず。
    DB      0
    DB      0
    DB      0
    DB      0
    DB      0
    DB      0
    DB      0
    DB      0
    
    END
    