|
77:Re: BEEP hideyosi 10/11 23:45 そんなわけで、こういうコードを書いた。 これで、ビープは鳴り出した。一応成功である。 なんか突っ込みあったら・・・(もっといい方法とか) --------------------------------------------- [BITS 16] [OPTIMIZE 1] [OPTION 1] [INSTRSET "8086"] [FORMAT "BIN"] ORG 0x100 ;----------------------------------------------------- ;--- こっから上は、MS-DOSの.COMを作る時の ------------ ;----おまじないだと思ってくれい! ------------ ;----------------------------------------------------- ;-------- 実験部分 ---------------------- ;IN・OUTは、DXレジスタに、対象となるI/Oアドレスを ;入れてから行う。今回は0x0061 MOV DX,0x61 ;まず、現在の0x0061の内容を一旦持ってくる IN AL,DX ;持ってきた内容の内、一番目と2番目のビットだけ、1に ;する。そのためには、 00000011 すなわち、0x03で、 ;持ってきた内容にORをかける。こうすると、一番目と ;二番目だけが1になり、あとはそのまんま変化しない。 OR AL,0x03 ;出来上がった内容を、再び0x0061番地に書き戻す。 OUT DX,AL ;----------------------------------------------------- ;---- これがないと、暴走しちゃうぞ! ------------- ;----------------------------------------------------- ;MS-DOS終了 INT 0x20 ---------------------------------------------------------- |