偽指令dd 和 操作符dup

2021-10-10 10:32:49 字數 1466 閱讀 1912

db:define byte 定義位元組型資料 —— 八位資料

dw:define word 定義字型資料 —— 十六位資料

dd:double word 定義雙字型資料 —— 三十二位資料

比如:

data segment

dd 1

dw 1

db 1

data ends

可以用debug觀察記憶體分配情況

問題:用div計算data段中第乙個資料除以第二個資料後的結果,商存放在第三個資料的儲存單元中

data segment

dd 100001; 100001b=186a1h,超過了ax所能儲存的最大值

dw 100

dw 0

data ends

分析:data段的第乙個資料是 被除數,為dword(雙字)型,32位,所以在做除法之前用dx存放高16位,用ax存放低16位(將data:0字單元中低16位儲存在ax,data:2字單元中高16位儲存在dx)

完整**如下:

data segment

dd 100001; 100001b=186a1h,超過了ax所能儲存的最大值

dw 100

dw 0

data ends

mov ax,data

mov ds,ax

mov ax,ds:[0]

;ds:0字單元中低16位儲存在ax中

mov dx,ds:[0]

;ds:2字單元中高16位儲存在dx中

div word ptr ds:[4]

;用dx:ax中的32位資料除以ds:4字單元中資料

mov ds:[6],ax ;將商存放在ds:6字單元中

;ax存放商,dx存放係數

dup是乙個操作符,在組合語言中同dw、db、dd等一樣,也是由編譯器識別處理的符號。它是和db、dd、dw等資料定義偽指令配合使用的,用來進行資料的重複

db 3 dup (0)

;定義了三個位元組,相當於db 0,0,0 這個0有多大是通過前面的db確定

db 3 dup (0,1,2)

;定義了九個位元組,相當於db 0,1,2,0,1,2,0,1,2

db 100 dup (

'12'

);重複了100個『12』

db 3 dup (『123』,『abc』)

dup使用格式如下:

dd 重複的次數 dup (重複的雙字型資料)

dw 重複的次數 dup (重複的字型資料)

db 重複的次數 dup (重複的位元組型資料)

十一 偽指令 資料型別 操作符

功能 定義乙個段,segment指明段的開始,ends指明段的結束。語法 段名字 segment。段名字 ends 例項 daima segment mov ax,1234h mov ax,4c00h daima ends shuju segment 放一些資料 shuju ends 語法 assu...

操作符offset 和 jmp指令

轉移指令 可以修改ip或者同時修改cs和ip的指令 jmp loop call 總的來說,轉移指令就是可以控制cpu執行記憶體中某處 的指令。8086的轉移行為有一下幾類 由於轉移指令對ip的修改範圍不同,段內轉移,又分為 短轉移和近轉移 loop 無條件轉移指令 jmp 條件轉移指令 偽指令off...

前置操作符和後置操作符

操作符可以被過載 全域性函式和成員函式均可以進行過載 過載前置 操作符不需要額外的引數 過載後置 操作符需要乙個int型別的佔位引數 來看乙個例子 include include using namespace std class test intvalue test operator test o...