-2

この 16 進コードを実行する AsmProgram を作成しました。

9D95:00
9D96:00
9D97:00
9D98:00
9D99:0E
9D9A:09
9D9B:3E
9D9C:00
9D9D:EF
9D9E:5D
9D9F:49
9DA0:06
9DA1:80
9DA2:A8
9DA3:CB
9DA4:47
9DA5:CB
9DA6:0F
9DA7:CA
9DA8:95
9DA9:9D
9DAA:10
9DAB:F9
9DAC:C9

+ボタンが押されるまで待ってから終了するはずですが、機能していないようです。

4

2 に答える 2

5

私が知る限り、これはあなたの元のコードです:

        .org 9D95h
        nop
        nop
        nop
        nop
        ld c, 09h       ; ???
        ld a, 0         ; ???
        rst 28h         ; \
        .db 5Dh         ;  > DispTail, destroys AF, BC, DE, HL, aka
        .db 49H         ; /  undefined behaviour in this case (we don't
                        ;    know what A contains)
        ld b, 80h       ; B <- 0x80
        xor b           ; A <- A XOR B
        bit 0, a        ; A[0] == 0, Z is set, if so
loop:   rrc a           ; rotate right A, C <- A[0]
        jp z, 9D95h     ; Jump to 9D95, if Z set
        djnz loop       ; Decrease B, jump if not zero to loop
        ret             ; After 128 jumps, returns

つまり、全体として、キーコードのチェック部分は最初から正しくありませんでした (間違った ROM 呼び出しを呼び出し、過度に複雑になりました)。これがうまくいくように見えたものです:

        .org 9D95h
        rst 28h         ; \
        .db 72h         ;  > Call GetKey, A <- key code
        .db 49h         ; /
        cp 80h          ; Compare A with immediate value 0x80 (subtract),
                        ; key code for [+] is 0x80
        jp nz, 9D95h    ; Jump if Z is not set (was not 0x80)
        ret             ; return

または16進数で:

EF 72 49 FE 80 C2 95 9D C9
于 2016-04-09T21:50:14.717 に答える
2

あなたが書いたプログラムは、基本的に TI-83+/84+/SE モデル電卓用です。あなたの意図したターゲットは TI-83 でした。変更する必要がある主な項目は 3 つあります。

  • $9D95 ではなく、.org $9327 でコードを開始します
  • システムコールだけの bcall() はありません。bcall(_GetCSC) の代わりに、_GetCSC を呼び出します。
  • ti83plus.inc の代わりに ti83asm.inc が必要です

それでは、サンプルプログラムを作成しましょう。

.NOLIST
#define equ .equ
#define EQU .equ
#define end .end
#include "ti83asm.inc"
#include "tokens.inc"
.LIST
.org 9327h
start:
    call _GetKey ;CDFE4C
    cp 80h       ;FE80
    jr nz,start  ;20F9
    ret          ;C9

私は TI-83 用にプログラミングしたことがないので、読んだチュートリアルから、動作するコードをつなぎ合わせたことを願っています。

于 2016-04-10T12:53:05.867 に答える