資料集
ここはhideyosiの学習帳です。いろいろな資料を集めたり整理したりしています。オイラ用のノートなので間違っていたり未完成だったりしますので信用度は相当低いことをあらかじめご了承くださいませ。
Table of contents
ビットを一部だけ操作したい
0x1Fなどの8ビットや16ビットのデータ。あるいはフラグなどのレジスタ。時々、その数値全体ではなく、ビット単位で操作したい場合があります。
特定のビットを強制的に1にしたい
1にしたいビットだけ1にした値をORしてやる。
MOV AL,00000000B OR AL,00001000B
たとえばこうすると、結果は00001000Bとなる。ORする数値(この例では00001000B)は1にしたい部分だけを1にすればそこだけ強制的に1になる。
MOV AL,00000000B OR AL,01001001B ←こうすると7ビット目、4ビット目、1ビット目だけ1になる
もし指定のビットが元々1だったら変化はない
意味はないが実験 MOV AL,00000000B OR AL,00000000B ←演算はされるが結果は無変化。(意味がない) MOV AL,00000000B OR AL,11111111B ←演算はされるが結果は MOV AL,0xFF と同じ。(意味がない)
特定のビットを強制的に0にしたい
上記のORと理屈はまったく同じ。 0にしたいビットだけ0にした値をANDしてやる。
MOV AL,10110110B AND AL,11101111B
結果は 10100110B となる。つまり、5番目のビットだけが0になり、他には影響しない。
同じく対象のビットが元々0だったら変化はないことになる
特定のビットを強制的に反転したい
反転させたい部分だけ1にした値をXORしてやる。
MOV AL,10110110B XOR AL,00010000B ←元の値の5ビット目だけ、もし1なら0、もし0なら1になる。
MS-DOSで動くcom形式のソフトを作りたい
下記を雛形にして書いてゆけば良い
;------------------------------------------------ ;-------------- MS-DOS用定義 ----------------- [BITS 16] [OPTIMIZE 1] [OPTION 1] [INSTRSET "8086"] [FORMAT "BIN"] ORG 0x100 ;------------------------------------------------ ;--- ↑はとりあえずはMS-DOSのcomを作る時の ;--- おまじない程度の理解にしておいて・・・ ;------------------------------------------------ ;ここにアセンブラを書いていく ;------------------------------------------------------ ;MS-DOS終了 INT 0x20 ;------------------------------------------------------
Counter: 2528,
today: 1,
yesterday: 1
Last-modified: 2024-01-06 (Sat) 22:37:41 (JST) (385d) by