|
3:続いてキー判定部 hideyosi 10/24 10:07 前回のコード。 私は、キーボードスイッチと文字コードとの対応を、CMP、JEで、だーーーっと書いた。まあ、あれでも動くから問題ないっちゃぁないんだけど、なんかカコワルイし、書くのも大変。 そんなのを晒していたら、Kタンがこんな参考コードをくれた。 --------------------------------------------------------- ; ALには0x1eなどのコードが既に入っているとする。 MOV BH,0 MOV BL,AL MOV AL,[BX+table] ; これでもうALには文字コードが入っている。たくさんのCMP+JEにさようなら。 ; 以下はプログラムではなくデータなので間違って実行しないような位置におく table: DB 0, 0, '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '-', '^', 8, 9 DB 'Q', 'W', 'E', 'R', 'T', 'Y', 'U', 'I', 'O', 'P', '@', '[', 10, 0, 'A', 'S' DB 'D', 'F', 'G', 'H', 'J', 'K', 'L', ';', ':', 0, 0, ']', 'Z', 'X', 'C', 'V' DB 'B', 'N', 'M', ',', '.', '/', 0, '*' (以下略) --------------------------------------------------------- ・・・ふーむ・・・ これをそのまんまパクるのも、まあありだけど、ちょっとオベンキョしてみよう。 ;この時点で、例えばAボタンが押されている。つまり、 ;ALには0x1eが入っているとする。 MOV BH,0 ;BHに0を代入 MOV BL,AL ;BLに、ALの内容をコピー。 ;?すると、BXは、0x001e となるのか? MOV AL,[BX+table] ;ふむむ・・・ここら辺りがよくわからないなぁ・・・ まあいいや。とりあえず、一旦これを動かしてみよう。 ・・・・・あれえぇぇぇぇぇ!? なんか、メチャクチャな文字が表示されるぞ!? |