あなたは
人目のアセンブラの受講生です。 |
アセンブラ入門内検索
アセンブラトップ
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-10.モザイク
- ソースファイル
-
mozaic.cpp
- 定義
-
void CGraphDoc::TranMosicAsm(LPSTR pDIB, DWORD width, DWORD height, DWORD pix)
- 定義済み変数
-
- pDIB・・・・・画像データのアドレス(32bits)
- width・・・・・画像の横幅(32bits)
- height・・・・画像の高さ(32bits)
- pix・・・・・・モザイクマトリックスのサイズ(32bits)
- 機能
-
モザイク加工を施す
- 解説
-
モザイクとは、モザイクマトリックスと呼ばれる正方形の中を平均化することである。
すなわち、モザイクマトリックスが2ピクセルの場合は、2×2の4ピクセル分の平均を取り、
その4ピクセルに格納することで、モザイク化される。
? | ? | ? | ? | ? | ? |
1 | 2 | 3 | 4 | 5 | 6 |
7 | 8 | 9 | 10 | 11 | 12 |
? | ? | ? | ? | ? | ? |
| → |
| ? | ? | ? | ? | ? | ? |
4 | 4 | 6 | 6 | 8 | 8 |
4 | 4 | 6 | 6 | 8 | 8 |
? | ? | ? | ? | ? | ? |
|
- 流れ
-
今回は流れがかなり複雑になると思う。今までの二重ループに加え、マトリックスの
計算をするのに、横、縦とさらに二重のループが必要になる。
- ヒント
-
例えば、上の例のようにモザイクマトリックスが2ピクセルで、画像の幅が奇数ピクセルの
場合、一番右が残ってしまう。このような場合は、マトリックスに足りないが、残った余り
だけで平均化する。
1つのデータは8bitsであるが、平均を取るための足し算は8bitsレジスタで行うと、
当然桁が足りなくなってしまう。マトリックスの大きさが16を越えると、16bitsレジスタ
でも足りなくなってしまう。そこで計算はすべて32bitsレジスタを使う必要がある。
前ページへ :
トップへ :
次ページへ
|