SSブログ

孤独へ向って突っ走れ(11) [  PC-98x1(補完計画)]

私の左足はまだ治っていない。昨日まではトイレに行ってスリッパが履けずに裸足だったが、今日はスリッパが履ける。だから昨日よりはいい。

そんな状態なので今日も引き続き横になって過ごさなければならず、暇に任せてブログ記事を複数書いてしまうと思う。もちろん記事はPCではなくスマホで時間をかけて作文している。


私は若い頃からおもにC系の言語を使ってきた。だからプログラミングの思考がどうにもC的になりがちだ。他言語で別のやり方が出てくると私は苦労する。たとえばBASIC系のVariant型は理解するまでに苦労した。メモリ上のサイズが異なる型のどれにもなれる、それどころか文字列も格納できるだって?そんないい加減なものがあってたまるか!というように。今はMASMの文法を学び直そうとして、たまに混乱している。

私にはLEAがわからない。
MASM文法において
LEA dest src
は、srcのアドレスをdestにロードする。destはレジスタまたはメモリが可能であり、srcは即値、レジスタ、メモリが可能である。
私にわかるのは、ひとつだけだ。下記のようにデータが定義されていたとして
msg db 'mojiretsu', 0
文字列を表すラベルを使って
lea ax,[msg]
とすれば、axにはデータmsgの先頭アドレスが入りそうな気がする。そこまでがわかる。
ところが、srcは即値やレジスタでもいいという。即値やレジスタにアドレスはないと私は確信する。
ひょっとすると、srcは即値やレジスタでもいいというのは
lea ax,[bx + 8] 
のような意味かもしれないと私は想像する。これは可能な文だという。でもやはり私はわからない。「bx + 8のアドレス」というものはあり得ないと私には思える。たぶんこれは、フラグレジスタの変更を別とすれば、
mov ax,bx
add ax,8
と同じ動作で、アドレスは関係ないのでは。

LEA SI,[1F6A]
というのが出てきた。1F6Aは即値であり、それのアドレスというのはあり得ないから、1F6AHそのものをSIに入れるとしか私には思えない。でもそうすると、なんでMOVを使わないのかという疑問が私には生じる。

コメント(0) 

コメント 0

コメントの受付は締め切りました