読者です 読者をやめる 読者になる 読者になる

落書きノート

ふと自分が気になった事を書いてます

アセンブラ

MASM32 on Windows 10

軽くアセンブラ行脚をしています。 ;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ; アセンブラプログラミング ;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ .486 .model flat, stdcall includelib \masm32\lib\user32.lib…

NASM MSDOS 32bit on Windows 10 独習アセンブラ

16bitという情報が流れてましたが、実際はMSDOSの32bitでした。NASM 0.98.39を使ってます。Win32 BinariesとMSDOS32 Binariesからそれぞれダウンロードします。で、実行するときに必要なMSDOSエミュレータをダウンロードします。今回はMSDOS Playerを使いま…

CASL IIで問題を解く

問題集やってみてます。F式表記というのからやり始めました。macOSでVSCode使ってやってみたんですけど、IPA公式のJavaCASLのレジスタ表示がおかしいことになってます。コマンドのデバッグでブレークポイントを設定すると使えますが、使えないですね、これ……

CASL IIで問題を解く準備

マクロを使ってやればIO周りは簡単に使えるようになってますね。後は問題を解いていくだけです。すんなりと行くかなぁ…。 FPRG START IN DATA,LEN LD GR0,DATA SUBA GR0,PARSE ADDA GR0,DATA2 ADDA GR0,PARSE ST GR0,ANS OUT ANS,LEN RET DATA DS 20 LEN DS …

アセンブラの条件分岐 i386編

参考書から抜粋してます。以前投稿した記事も含めて、自分用にまとめて復習しています。 i386では「ブランチ」でなく「ジャンプ」と呼ぶようだ 以下のC言語ファイルがあります。 int condition(int a, int b) { if (a == b) b = 1; return b + 1; } これを逆…

複雑な処理を読んでみる i386編

以下のようなCソースファイルがあります。 int call_complex1() { return return_arg1(0xfe) + 1; } int call_complex2(int a, int b) { static_value = return_arg1(b); return b; } これはi386で逆アセンブルするとどうなるのでしょうか…というのが今回の…

関数呼び出し i386編

i386がなんとなく気になったので記事に書いてみました。以下のプログラムをi386で逆アセンブルします。 int call_complex1(){ return return_arg1(0xfe) + 1; } 以下が生成されたコードです。 00fe150d <call_complex1>: fe150d: 68 fe 00 00 00 push $0xfe fe1512: e8 26 f</call_complex1>…