K氏のheboOSをまねてみる

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

----------------------------------------------------------


1-

BluesBB ©Sting_Band