はじめまして、井上ともうします、
皆様方の超超高度な話題の中、初歩的な質問で
大変恥ずかしいのですが、2週間悩んでもうまくいかないので
質問致します・・・・・・・・
問題は16進数をどうやって10進数にするか?です
例えばR1に入っている16ビットのデータを10進5桁にしたい場合
皆様ならどのような方法で処理するのでしょうか?
自分はいままでZ80を使ってから最近H8にシフトした口なので
割り算などよく使い方がわからず、引き算で商を出し、余りをさらに割る
などの方法で行ったのですがまったくうまくいかず・・・・・・・(^_^;)
こんな感じのサブルーチンなのですが
HEXDC: MOV.W @SEG5,R6 ;R6にSEG5のアドレス代入
MOV.W #10000,R5 ;R5に10000を代入
JSR @WARI ;WARISにジャンプ
MOV.W #1000,R5 ;R5に1000を代入
JSR @WARI ;WARIにジャンプ
MOV.W #100,R5 ;R5に100を代入
JSR @WARI ;WARIにジャンプ
MOV.W #10,R5 ;R5に10を代入
JSR @WARI ;WARIにジャンプ
MOV.B R5L,@R6 ;余りを1桁目に
WARI: XOR.B R1L,R1L
WARI1: SUB.W R5,R3 ;R3からR5を減算
BCS WARI2 ;キャリーが出たらWARI2へ
INC.B R1L ;R1Lに1を加算(商)
JMP @WARI1 ;WARI1にジャンプ
;-----------------------------------------------------------------------
WARI2: ADD.W R5,R3 ;一回多いのでR5を加算
MOV.B R1L,@R6 ;商(R0L)をR6が示すアドレスに
INC.W #1,R6
RTS
と何度やってもうまくいかないのはナゼ?
もしかしたらこれ以外の場所が悪いのでしょうか?