日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

数据类型与数据传送指令

發布時間:2025/6/17 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据类型与数据传送指令 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

數據類型與數據傳送指令

數據類型、數據傳送指令、間接尋址

一、數據類型

數據類型的基本特征是以數據為的數目度量的大小,其他特征主要是為了方便程序員記憶變量中存儲的數據類型,默認情況下大小寫不敏感。

類型描述
BYTE8位無符號
SBYTE8位有符號
WORD16位無符號
SWORD16位有符號
DWORD32位無符號
SDWORD32位有符號
FWORD48位整數
QWORD64位整數
TBYTE80位整數
REAL432位短實數
REAL864位長實數
REAL1080位擴展實數

遺留數據定義偽指令

類型描述
DB8位整數
DW16位整數
DD32位整數或實數
DQ64位整數或實數
DT定義10字節

數據定義語句:

[變量名] 數據定義偽指令 初始值[,初始值]...

有多個初始值的話,用逗號隔開;未初始化,用?代替初始值。

bigArr DWORD 500 DUP(?)

二、數據傳送指令

指令中的操作數的描述及其表述

1、操作數類型:

  • 立即操作數(immediate)

  • 寄存器操作數(register)

  • 內存操作數(memory)

操作數描述
r88位通用寄存器:
r1616位通用寄存器:
r3232位通用寄存器:
reg任意的通用寄存器
sreg16位段寄存器:
imm8位、16位或32位立即數
imm88位立即數(字節)
imm1616位立即數(字)
imm3232位立即數(雙字)
r/m88位操作數(可以是8位通用寄存器或內存字節)
r/m1616位操作數(可以是16位通用寄存器或內存字節)
r/m3232位操作數(可以是32位通用寄存器或內存字節)
mem8位、16位或32位操作數

2、基本命令

mov destination,source 從源操作數向目的操作數幅值數據

movzx(move with zero-extend)零擴展傳送,將源操作數的內容復制到目的操作數中,并將該值零擴展至16位或32位。只能用于無符號整數,目的操作數只能是寄存器。

movezx r32 r/m8 movezx r32 r/m16 movezx r16 r/m8

movsx(move with sign-extend)符號擴展傳送,將源操作數的內容復制到目的操作數中,并將該符號零擴展至16位或32位。只能用于有符號整數,目的操作數只能是寄存器。

movesx r32 r/m8 movesx r32 r/m16 movesx r16 r/m8

LAHF:將ELFAGS寄存器的低字節復制到AH寄存器,無操作數

SAHF:將AH寄存器的值復制到ELFAGS寄存器的低字節,無操作數

XCHG:交換兩個操作數的值,不接受立即數操作數

XCHG reg,reg XCHG reg,mem XCHG mem.reg

直接偏移操作數:在變量名稱后加上一個偏移值,可以創建直接偏移操作數,來訪問沒有顯式標號的內存地址。

arrayW WORD 100h,200h,300h mov ax [arrayW+2];AX = 200H

3、加法和減法

INC/DEC:從操作數中加1或減1

INC reg/mem DEC reg/mem

ADD:將尺寸相同的源操作數和目的操作數相加,結果保存在目的操作數中

ADD 目的操作數,源操作數

SUB:將尺寸相同的源操作數和目的操作數相加,結果保存在目的操作數中

SUB 目的操作數,源操作數

NEG:將數字轉換成補碼求相反數

NEG reg/mem

4、相關操作符和偽指令

  • OFFSET,返回變量相對于其所在段開始的偏移

  • PTR,允許重載變量的默認尺寸

  • TYPE,返回數組中每個元素的大小(字節)

  • LENGTH,返回數組內元素的數目

  • SIZEOF,返回數組初始化時占用的字節數

三、間接尋址

處理數組唯一可行的方法是用寄存器作為指針并操縱寄存器的值,這稱為間接尋址。操作數使用間接尋址時,就稱為間接操作數。

constant[reg] [constant + reg] arrayW WORD 100h,200h,300hmov esi,0 mov al,[arrayW + esi]mov al,arrayW[0]

比例因子

array DWORD 100h,200h,300h,400hmov esi,3*BYTE array ;array[3]的偏移地址 mov eax,[esi] ;eax=400hmov esi,3 ;下標 mov eax,array[esi*3] ;eax=400h

總結

以上是生活随笔為你收集整理的数据类型与数据传送指令的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。