データ処理の問題
二つの問題
1.データは、任意の場所で処理しました
2.どのくらい処理されるデータであります
`
これは表しSREGレジスタREGセグメントレジスタを表します
REGのコレクションが含まれます:ax, bx, cx, dx, ah, al, bh, bl, ch, cl, dh, dl, sp, bp, si, di
SREGであって設定します。ds, ss, cs, es
"
で使用することができる唯一の4つのレジスタ[...]
のメモリセルをアドレス指定が行われます
彼らは
bx, si, di, bp
次のプログラムは正しいです
mov ax, [bx]
mov ax, [bx + si]
mov ax, [bx + di]
mov ax, [bp]
mov ax, [bp + si]
mov ax, [bp + di]
次のプログラムが間違っています
mov ax, [cx]
mov ax, [ax]
mov ax, [dx]
mov ax, [ds]
演算子を使用することが存在しないケースの名前を登録しX ptr
、メモリセルの既知の長さX
もよいword
、またはbyte
word ptr
命令アクセスメモリユニットを表現することワード単位でありますbyte ptr
これは、メモリアクセス命令は、バイト単位素子であることを示しています
mov ax, 2000h
mov ds, ax
mov word ptr [1000h], 1 ; worde的使用方式
mov byte ptr [1000h], 1 ; byte 的使用方式
push
ワード演算命令、指示する必要はありませんbyte
かword
DIV除算命令(学校でバック)
- メモリユニットまたはREG中の2つのタイプの8と16:除数
- 配当:DXと斧や斧で上のデフォルト
- 8ビットの除数場合、被除数が16ビットであり、デフォルトはAXに格納されます。
- 32、及びAXに格納され、DX、DX高いストレージ16と比較して16ビットの除数、被除数は、下位16ビットを格納する場合AX
- 除数が8、残り供給ALである場合、除算除算演算に格納されているAHが格納されます。
- 除数は16、AXビジネス、DXストレージ操作分割格納除算演算の剰余ビット場合
MUL乗算命令
MULは2つのことが掛け算をしなければならないとき、乗算命令であります
- 2つの数値を掛ける:どちらかの8ビットまたは16ビットです
- 8です
- ALは、8バイト単位のREGにデフォルト、または他のメモリに配置されます
- 結果:AXに配置されたデフォルト
- 16です
- AXのデフォルト、16ビット・ワードまたはメモリユニットのREGに他の
- 結果:DXの高いデフォルト、AXに保存されている低
- 8です
次のフォーマット
; mul reg
; mul 内存单元
; 例如:8位
mul byte ptr ds:[0] ; (ax) = (al) * ((ds) * 16 + 0)
; 16位
mul word ptr [bx + si + 8] ; (ax) = (ax) * ((ds) * 16 + (bx) + (si) + 8)) 结果的低16为
; (dx) = (ax) * ((ds) * 16 + (bx) + (si) + 8)) 结果的高16为
DDディレクティブ
DWORD(ダブルワード、ダブルワード)型データを定義するために使用されるDD。
data segment
db 1
dw 1
dd 1
data ends
0、1バイト:最初のデータは、01H、データであり、
1、1バイト:第二のデータは0001H、データであり、
00000001H第3のデータ、データ:3、2つのバイト
指令DUP
これは、DWは、データの繰り返しのために、ディレクティブを使用してのように定義するデータをddは、DB
構文は次のとおりです。
デシベル繰り返しDUP(重複データ)
例
db 3 dup(0) ; 相当于 db 0, 0, 0
db 3 dup(0, 1, 2) ; 相当于0, 1, 2, 0, 1, 2, 0, 1, 2
db 3 dup('abc', 'ABC') ; 相当于db 'abcABCabcABCabcABC'