ページへ戻る
印刷
GUIGUI01/memo18
をテンプレートにして作成 ::
OSASK計画
osaskwiki
:GUIGUI01/memo18 をテンプレートにして作成
開始行:
TITLE:x
* ぐいぐい01に関するメモ-18
-(by [[K]], 2008.12.30)
-メモのうち重要な部分をそのうちまとめてまともなページを作る
*** (33) naskで「ぐいぐい01」アプリを作る
-OSASK-IRCで、なんとアセンブラで「ぐいぐい01」アプリを作...
----
-とりあえずhelloを書いてみましょう。
; ex0000.nas
[FORMAT "WCOFF"]
[FILE "ex0000.nas"]
[INSTRSET "i486p"]
[BITS 32]
GLOBAL _G01Main
[SECTION .text]
_G01Main:
MOV EAX,msg
CALL [ESI]
DB 0x53, 0x00 ; [5 (0) (!6_x) 3 EAX] ; ...
RET
[SECTION .data]
msg DB "hello, world", 0
-こんな感じかなあ。ESIの値はアプリ起動時に渡される値を使...
-文字列の最後に0x0aが入っていませんが、これは入れても入れ...
-これをmakeするためのMakefileは次の通りです。
TARGET = ex0000
MODE = g01
OBJS = ex0000.obj
INCPATH = ../z_tools/guigui01/
include ../z_tools/com_mak.txt
-これを使ってmakeすると、60バイトのex0000.g01と56バイトの...
-56バイトってどういうこと!?17バイトになるんじゃなかった...
----
-次はcharsをやってみましょう。
; ex0001.nas
[FORMAT "WCOFF"]
[FILE "ex0001.nas"]
[INSTRSET "i486p"]
[BITS 32]
GLOBAL _G01Main
[SECTION .text]
_G01Main:
MOV AL,0x20
putcloop:
CALL [ESI]
DB 0x55, 0x16, 0xb8 ; [5 (0) !5 1 AL]
INC AL
CMP AL,0x7f
JB putcloop
RET
-Makefileはex0000.nasとほぼ同じなので省略しますね。これを...
----
-ということで、helloも.dataセクションなしで書いてみること...
; ex0002.nas
[FORMAT "WCOFF"]
[FILE "ex0002.nas"]
[INSTRSET "i486p"]
[BITS 32]
GLOBAL _G01Main
[SECTION .text]
_G01Main:
CALL [ESI]
DB 0x51, "hello, wolrd", 0
RET
-こんな風に書けば、ポインタ指定なしで直接データを置けるの...
-これをmakeすると、48バイトのex0002.orgができます。8バイ...
----
-もっと小さくしたいということなら(まあ普通はそこまでやる...
; ex0003.nas
[FORMAT "BIN"]
[INSTRSET "i486p"]
[BITS 32]
[SECTION .text]
DB 0x47, 0x01, 0x04 ; 簡易形式用ヘッダ
_G01Main:
CALL [ESI]
DB 0x51, "hello, wolrd", 0
RET
-こんな感じです。これはもうリンカとかは使わないので、Make...
efg01 ../z_tools/nask.g01 ex0003.nas ex0003.g01 ex0003.lst
-これで20バイトの.g01ができます。ついにきました。一気に「...
----
-ここまできたらせっかくなので17バイトまで行きますかね(笑...
; ex0004.nas
[FORMAT "BIN"]
[INSTRSET "i486p"]
[BITS 32]
[SECTION .text]
DB 0x47, 0x01, 0x05 ; 簡易形式用ヘッダ
_G01Main:
DB 0x51, "hello, wolrd", 0
-これで完成です。これをnaskするとめでたく17バイトになりま...
* こめんと欄
- abcdw009向けの記述に修正。 -- [[K]] &new{2009-01-03 (土...
- abcdw014向けの記述に修正。 -- ''K'' &new{2009-01-15 (木...
#comment
終了行:
TITLE:x
* ぐいぐい01に関するメモ-18
-(by [[K]], 2008.12.30)
-メモのうち重要な部分をそのうちまとめてまともなページを作る
*** (33) naskで「ぐいぐい01」アプリを作る
-OSASK-IRCで、なんとアセンブラで「ぐいぐい01」アプリを作...
----
-とりあえずhelloを書いてみましょう。
; ex0000.nas
[FORMAT "WCOFF"]
[FILE "ex0000.nas"]
[INSTRSET "i486p"]
[BITS 32]
GLOBAL _G01Main
[SECTION .text]
_G01Main:
MOV EAX,msg
CALL [ESI]
DB 0x53, 0x00 ; [5 (0) (!6_x) 3 EAX] ; ...
RET
[SECTION .data]
msg DB "hello, world", 0
-こんな感じかなあ。ESIの値はアプリ起動時に渡される値を使...
-文字列の最後に0x0aが入っていませんが、これは入れても入れ...
-これをmakeするためのMakefileは次の通りです。
TARGET = ex0000
MODE = g01
OBJS = ex0000.obj
INCPATH = ../z_tools/guigui01/
include ../z_tools/com_mak.txt
-これを使ってmakeすると、60バイトのex0000.g01と56バイトの...
-56バイトってどういうこと!?17バイトになるんじゃなかった...
----
-次はcharsをやってみましょう。
; ex0001.nas
[FORMAT "WCOFF"]
[FILE "ex0001.nas"]
[INSTRSET "i486p"]
[BITS 32]
GLOBAL _G01Main
[SECTION .text]
_G01Main:
MOV AL,0x20
putcloop:
CALL [ESI]
DB 0x55, 0x16, 0xb8 ; [5 (0) !5 1 AL]
INC AL
CMP AL,0x7f
JB putcloop
RET
-Makefileはex0000.nasとほぼ同じなので省略しますね。これを...
----
-ということで、helloも.dataセクションなしで書いてみること...
; ex0002.nas
[FORMAT "WCOFF"]
[FILE "ex0002.nas"]
[INSTRSET "i486p"]
[BITS 32]
GLOBAL _G01Main
[SECTION .text]
_G01Main:
CALL [ESI]
DB 0x51, "hello, wolrd", 0
RET
-こんな風に書けば、ポインタ指定なしで直接データを置けるの...
-これをmakeすると、48バイトのex0002.orgができます。8バイ...
----
-もっと小さくしたいということなら(まあ普通はそこまでやる...
; ex0003.nas
[FORMAT "BIN"]
[INSTRSET "i486p"]
[BITS 32]
[SECTION .text]
DB 0x47, 0x01, 0x04 ; 簡易形式用ヘッダ
_G01Main:
CALL [ESI]
DB 0x51, "hello, wolrd", 0
RET
-こんな感じです。これはもうリンカとかは使わないので、Make...
efg01 ../z_tools/nask.g01 ex0003.nas ex0003.g01 ex0003.lst
-これで20バイトの.g01ができます。ついにきました。一気に「...
----
-ここまできたらせっかくなので17バイトまで行きますかね(笑...
; ex0004.nas
[FORMAT "BIN"]
[INSTRSET "i486p"]
[BITS 32]
[SECTION .text]
DB 0x47, 0x01, 0x05 ; 簡易形式用ヘッダ
_G01Main:
DB 0x51, "hello, wolrd", 0
-これで完成です。これをnaskするとめでたく17バイトになりま...
* こめんと欄
- abcdw009向けの記述に修正。 -- [[K]] &new{2009-01-03 (土...
- abcdw014向けの記述に修正。 -- ''K'' &new{2009-01-15 (木...
#comment
ページ名: