Assembler

movl, cmpl

もぶる、こんぷる、、、この"る"って何者だろう思っていたのですが、どーやらこのエルはオペランドがlong型(32bit)であることを示すもののようですね。http://homepage1.nifty.com/herumi/prog/prog10.html movl 4(%esp), %eax addl 8(%esp), %eax intel系と…

数とかデータとか

n進数表記方法 2進数は後ろにBをつける 10B 8進数は前に0(数字)をつける、あるいは後ろにO(アルファベット)かQをつける 010 10o 10Q 10進数は後ろにDをつける 10D 16進数は前に$か0xをつける、あるいは後ろにHをつける $10 0x10 10h 2進化10進数(Binary-Cod…

PUSHとPOP

ソースコード.無意味に32bitレジスタ使ってます. ; PushPop.asm mov eax, 0x00000200 mov edx, 0x00000065 ; char='e' push edx mov edx, 0x00000067 ; char='g' push edx mov edx, 0x0000006F ; char='o' push edx mov edx, 0x00000068 ; char='h' int 0x…

jump命令による無限ループ

; jmp.ams bits 16 org 0x100 mov ax, 0x0200 mov dx, 0x0040 ; char='@' int 0x21 jmp 0x100アセンブルして実行すると"@@@@@@@@@@....@@@"の嵐.ctrl+cで強制終了可.不思議なのは,バイナリコードを見ても先頭にあると思われた"bits 16"や"org 0x100"と思…

カウンタを使ったループ処理

今年のNFLスーパーボールは,ピッツバーグの勝ち.Seattle SeaHowksは残念ながら負けてしまいました.スコアは21-10かな. アセンブリコード ;loop.asm bits 16 org 0x100 mov ah, 0x09 mov dx, msg mov cx, 0x3 doit: int 21h loop doit mov ax, 0x4C00 int…

スタックを用いたサブルーチンへの引数渡し

アセンブリコード ; subcall.asm ; ; サブルーチンにスタックを使用してパラメータを渡す ; void subRoutine(char, char)といったところか bits 16 org 0x100 mov ax, 0x0200 ; これはグローバルにアクセス可能とする mov bx, 0x41 ; パラメータその1 mov cx…

アセンブラはじめました

Java→Cときてさらにアセンブラ始めちゃうことにしました.完全素人ですが.Cもまだまだ素人なんですが,まあそれは置いといてと.いまどきアセンブラを教えてくれるセミナーなんて無いですからね.あっても会社は受講料払ってくれないですからね.JBoss Clus…

はじめてのアセンブラ

とりあえず『独習アセンブラ』にあったコードを書く.書かなきゃ始まらん. ; dispchar.asm mov ah, 02 mov dl, 31h int 21h mov ah, 4Ch mov al, 0 int 21hでもってアセンブル. D:\asmwork>nasm -f bin dispchar.asm -o dispchar.comわけが分からなくとも…

意外と早くできたアセンブラで"Hello World!"

CのHelloWorldプログラムのgccによるアセンブリ言語版を見て,アセンブラで"Hello World!"を出すとこまで行くのはかなり時間を要するかと思ったけれどもいきなり次がこれだった. ; dispstr.asm bits 16 org 0x100 mov ah, 9 mov dx, msg int 0x21 mov ah, 0…

数値演算と思いきや文字コード(Ascii)の演算でしょうこれは

addというのは加算命令らしい.レジスタDLに1を入れて,それからaddを使って5を足すというサンプルコードがあったのだけれども,出力させるためにさらに0x30を足せというのになんか違和感を感じたので代わりに0x35を足してみた. ; OnePlusFive.asm bits 16 …