トップ->アセンブラ入門

あなたは

人目のアセンブラの受講生です。

アセンブラ入門内検索

目次
アセンブラトップ
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の世界〜


・ このページの先頭に戻る
・ トップページに戻る



・ このページの先頭に戻る
・ トップページに戻る

トップ-> アセンブラ入門:3章.算術演算-> 3-1.符号なし演算と符号付き演算

←前ページへ :  トップへ :  次ページへ→



算術演算



3-1.符号なし演算と符号付き演算

  コンピュータが理解できる数字は2進数であり、これは人間には理解しにくい。 そこで人間が理解できるように変換する必要がある。この変換の方式は用途、 精度、変換のしやすさなどによりいくつかに分けられる。高級言語では そのうち汎用性の高い方法を採用しているが、アセンブリ言語では計算の 仕方を変えるだけで、すべての方法を用いることができる。

  高級言語では扱える種類は限られるが、手続きをすれば簡単に且つ、 ミスの無いように扱うことができる。これに反しアセンブリ言語では、 すべての種類を扱える反面、「この数字はこの方法で扱う」というのは プログラマーが管理しなくてはならず、ミスしやすい。

  このページでは数の表現方法を紹介し、アセンブリ言語で頻繁に使われる 「符号付き整数」と「符号なし整数」について解説する。

  数の表現は目的などによっていくつかの方法があることは上で述べた。 その種類は下記の通りである。


2進化10進法(BCD)
10進数の各桁をそれぞれ4桁(4bit)の2進数で表したもの。
例)10進数の193をBCDで表すと
193
000110010011
したがって(193)10=(000110010011)2となる。
2進数の並びのうち、1010〜1111は使わないので、効率は悪い。

10進ゾーン形式
BCDの1種で、アンパックBCDとも呼ぶ。10進数の1桁を8bit(1バイト)の2進数で表す。 10進数の1桁は2進数の4桁(4bit)で表すことができるので、残りの4桁(4bit)を何かの 数字で埋めなくてはならない。通常10進数の1桁を表す4bitは8bitのうちの下位に 置き、上位4bitは1111(EBCDIC規格)または0011(ASCII、JIS規格)を埋める。また 最後の1桁の上位4bitは符号を置く。1100ならば正、1101ならば負を表す。この 符号部分と1111または0011(上位4bit)をゾーン部、数字を表す下位4bitを 数値部と呼ぶ。

例)10進数の-193を10進ゾーン形式で表すと

193
JIS0011 00010011 10011101 0011
EBCDIC1111 00011111 10011101 0011
したがって(-193)10=(00110001 00111001 11010011)2となる。(JIS規格)

10進パック形式
パック10進数とも言う。10進ゾーン形式ではゾーン部には大して意味のないコードが入るため、 効率が悪い。そこで、10進数の1桁を4bitで表し、最後に符号を付けることで、語長を短くした ものがパック10進数である。

例)10進数の+193を10進ゾーン形式で表すと

193+
0001100100111100
したがって(+193)10=(0001100100111100)2となる。

固定小数点形式
整数部と小数部の2つに分けて表す方法で、それぞれは符号付き整数と同じである。 あまり見かけない。

浮動小数点形式
極端に大きな数や、極端に小さな数を扱うのに適している。例えば極端に小さい値は 1.2×10-10のように表すことがある。このように指数を用いて表したものが 浮動小数点形式であるが、場合によってはわずかな誤差や桁落ち(絶対値がほぼ等しい 同符号の間での減算もしくは異符号での加算)、情報落ち(非常に大きな数値と小さな数値 との加減算)などが起こる場合もある。
32bitの浮動小数点形式では最上位1bitは符号(0:正、1:負)、次の7bitで指数部( 2の指数+64)、下位24bitは仮数部を表す。

例)10進数の200を浮動小数点形式で表すと

(200)10=(11001000)2=0.11001×28 =0.11001×162
ここで正数であるから符号は「0」、指数は2であるから+64して(66)10=(100010)2 が指数部に、0.11001の「11001」が仮数部に入る。したがって、
(200)10=(0 1000010 110010000000000000000000)2となる。
例)10進数の12.5を浮動小数点形式で表すと
(12.5)10=(1100.1)2=0.11001×24 =0.11001×161
ここで正数であるから符号は「0」、指数は1であるから+64して(65)10=(100001)2 が指数部に、0.11001の「11001」が仮数部に入る。したがって、
(12.5)10=(0 1000001 110010000000000000000000)2となる。

  ここまで真剣に読んでくれた方、ごめんなさい。当ホームページではこれらは使いません。 っていうか、これらの数字を扱う場合はアセンブラよりも高級言語でやった方が数十倍楽です。 次のページで解説する「符号なし整数」「符号付き整数」は大事ですので、ちょっと気分転換でも してください。


←前ページへ :  トップへ :  次ページへ→