あなたは
人目のアセンブラの受講生です。 |
アセンブラ入門内検索
アセンブラトップ
0. はじめに
1. 基礎
1. レジスタとは
2. セグメントとは
2. MOV命令
1. MOV命令
2. コンパイル
3. 即値の転送
4. メモリーへの転送
5. データ定義疑似命令
6. 練習問題
3. 算術演算
1. 符号なし演算と符号付き演算
2. 足し算
3. 練習問題
4. フラグ
5. 引き算
6. かけ算
7. わり算
8. INC,DEC
4. 分岐
1. 無条件分離
2. 比較命令
3. 条件分離
4. 練習問題
5. ループ
6. サブルーチン
7. スタックとは
8. PUSH,POP
9. 練習問題
5. 論理演算
1. AND命令
2. OR命令
3. XOR命令
4. NOT命令
5. NEG命令
6. TEST命令
7. 練習問題
6. シフト演算
1. シフト
2. ローテート
3. 練習問題1
4. 練習問題2
7. ストリング命令
1. ストリング命令とは
2. MOVS?
3. REP
4. DFの設定
5. LODS?
6. STOS?
7. SCAS?
8. CMPS?
9 .練習問題
8. 入出力
1. 概要
2. IN命令
3. OUT命令
4. INS,OUTS命令
9. その他
1. LEA
2. XCHG
3. NOP
10. 割り込み
1. 割り込みとは
2. ソフトウェア割り込み
3. ハードウェア割り込み
4. 割り込みベクター
5. 割り込み処理の作り方
6. 練習問題
11. レジスタの型変換(キャスト)
12. 卒業試験
1. 卒業試験
2. 画像データの格納形式
3. インラインアセンブラ
4. ネガポジ反転
5. 明るくする、暗くする
6. グレースケール
7. 二値化
8. 上下反転、左右反転
9. 4分割
10. モザイク
11. シャープ
12. ぼかし
13. エンボス
14. ディザ拡散
15. 鉛筆を置いてください
13. 終わりに
文字コード
アセンブラ 〜MS-DOSの世界〜
このページの先頭に戻る
トップページに戻る
このページの先頭に戻る
トップページに戻る
|
前ページへ :
トップへ :
次ページへ
- 12-9.4分割
- ソースファイル
-
Div.cpp
- 定義
-
void CGraphDoc::TranDivAsm(LPSTR pDIB, LPSTR pOut, DWORD width, DWORD height)
- 定義済み変数
-
- pDIB・・・・・画像データのアドレス(32bits)
- pOut・・・・・返還後の画像データの格納アドレス(32bits)
- width・・・・・画像の横幅(32bits)
- height・・・・画像の高さ(32bits)
- 機能
-
画像を1/4に縮小し、その画像を4つ張り付ける
- 解説
-
縮小するアルゴリズムはバイキュービック法などいくつかある。縮小してもできるだけ
元の画像が歪まないようにするためのアルゴリズムである。1/nに縮小するアルゴリズムでは
簡単なものは、縦横それぞれnピクセル分の平均値を格納する方法、nの倍数分の座標の
データのみを格納する方法がある。サンプルプログラムや解答では一番簡単な
後者の方法を採用している。
- 流れ
-
今回は1/2にするので、x座標、y座標ともに偶数のピクセルをpDIBから読みとる。
そして、それをpOutに書き込む。4分割であるので、画像は4つになるわけだから、
書き込む先は4ヶ所になる。
例えば、x,y=(10,20)のピクセルのデータを、pOutの(5,10)、(5+width÷2, 10)、
(5,10+height÷2)、(5+width÷2, 10+height÷2)の座標に書き込む。
- ヒント
-
これ以降の機能では、流れが複雑になってくるので、ある座標のデータを
読み込むサブルーチンを作ると便利である。
例えば、X座標をEAXに、Y座標をEBXに格納して、そのサブルーチンを呼び出せば、
ALにR、BLにG、CLにBの輝度が格納され、EAXにpDIB(pOut)からのオフセットアドレス
が格納され帰ってくる。また、指定したアドレスが、画像データの外であれば、
CF(キャリーフラグ)が1になる、といったサブルーチンである。解答例では、
このようなサブルーチンを作成してある。
前ページへ :
トップへ :
次ページへ
|