データ処理のコンパイルを考えます

データ処理の問題

二つの問題

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ワード演算命令、指示する必要はありませんbyteword

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つのことが掛け算をしなければならないとき、乗算命令であります

  1. 2つの数値を掛ける:どちらかの8ビットまたは16ビットです
    • 8です
      • ALは、8バイト単位のREGにデフォルト、または他のメモリに配置されます
      • 結果:AXに配置されたデフォルト
    • 16です
      • AXのデフォルト、16ビット・ワードまたはメモリユニットのREGに他の
      • 結果:DXの高いデフォルト、AXに保存されている低

次のフォーマット

; 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'

おすすめ

転載: www.cnblogs.com/songyaqi/p/11887988.html