組合語言資料偽指令DUP用法,組合語言中的dup有什麼作用

2021-07-14 02:13:39 字數 2507 閱讀 4871

1樓:茲斬鞘

10 dup(1)重複定義了10個字元素,初始值為1,佔用10*2=20個位元組。

5 dup(?)重複定義了5個字元素(其初始值實際為0),佔用5*2=10個位元組

因此總共佔用30個位元組。

具體分析:在彙編定義變數的時候會用到dup,變數名 、型別 、初值表,dup用於把一個相同值賦值若干次,重複次數 dup(資料項),具體比如s db 30 dup(0),定義一個位元組型變數,該變數佔用30個位元組,所有位元組被初始化成0,equ是一個**替換指令。

擴充套件資料

在組合語言中,用助記符代替機器指令的操作碼,用地址符號或標號代替指令或運算元的地址。在不同的裝置中,組合語言對應著不同的機器語言指令集,通過彙編過程轉換成機器指令。特定的組合語言和特定的機器語言指令集是一一對應的,不同平臺之間不可直接移植。

比如:用「add」代表數字邏輯上的加減,「 mov」代表資料傳遞等等,通過這種方法,人們很容易去閱讀已經完成的程式或者理解程式正在執行的功能,對現有程式的bug修復以及運營維護都變得更加簡單方便。

2樓:侃民生看社會

前面對於資料的定義:db:定義位元組型資料(8位);dw:定義字型資料(16位)。

dd定義dowrd(double word,雙字)型資料。比如:

data segment

db 1

dw 1

dd 1

data ends

解釋:在data段總定義了3個資料:

第一個資料為01h,在data:0處,佔一個位元組;

第二個資料為0001h,在data:1處,佔1個字(2個位元組);

第三個資料為00000001h,在data:3處,佔2個字(4個位元組)。

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

data segment

dd 100001

dw 100

dw 0

data ends

分析:data段中的第一個資料是被除數,為dword型(32位)。在做除法之前,用dx和ax進行儲存。

將data:0字單元中的低16位儲存在ax中,data:2字單元中的高16位儲存在dx中。

mov ax, data

mov ds, ax

mov ax, data:[0] ;ds:0字單元中的低16位儲存到ax中

mov dx, data:[2] ;ds:2字單元中的高16位儲存到16中

div word ptr ds:[4] ;用dx:ax中的32位資料除以ds:4字單元中的資料

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

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

db 3 dup (0):定義了3個位元組,它們的值都是0,相當於db 0, 0, 0。

db 3 dup (0,1,2);定義了9個位元組,它們是0,1,2,0,1,2,0,1,2,相當於:db 0,1,2,0,1,2,0,1,2。

db 3 dup ('abc', 'abc');定義了18個位元組,他們'是abcabcabcabcabcabc',相當於:db 'abcabcabcabcabcabc'。

dup的使用格式如下:

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

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

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

dup是一個十分有用的操作符,比如我們要定義一個容量為200個位元組的棧段,如果不用dup,則需要大量的**來進行定義。如果用dup的話:

stack segment

db 200 bup (0)

stack ends

3樓:匿名使用者

dup是資料定義偽指令,它可以按照給定的次數來複制某個運算元,可以避免多次鍵入同樣一個資料。

()裡是要重複的數

如果是(?),表示不對內部資料進行處理,內容不定是什麼如果是(80),就是定義內容為8的記憶體單元,

組合語言中的dup有什麼作用

4樓:

dup是資料定義偽指令,它可以按照給定的次數來複制某個運算元,可以避免多次輸入同樣一個資料。

db x dup()

x是重複的次數

()裡是要重複的數逗號分隔

5樓:匿名使用者

n dup()就是將括號裡的**重複 n 遍 也就是迴圈語句

組合語言dup是什麼意思

6樓:匿名使用者

dup 是一條偽指令,用來重複初始化資料

如:str db 10 dup ('abc') ;這就是十個abc

格式:db 重複的次數 dup (重複的內容)

組合語言中out和in的用法,組合語言中OUT和IN的用法

在8086系列的組合語言中 in指令的意思是從埠中讀取資料,比如 in al,80h,將80h埠資料讀入到al中 out指令的意思是往埠輸出資料,比如 out 80h,al,將al輸出到80h埠 組合語言中,cpu對外設的操作通過專門的埠讀寫指令來完成 讀埠用in指令,寫埠用out指令。例子如下 i...

組合語言中ADD加法指令的問題關於組合語言中ADD指令的問題

1.0ac72h只是一個表示方法,跟ac72h是一樣的含義。ax裡還是儲存16位的值。之所以在前面多加一個0,是因為編譯器不識別以字母開頭的立即數。算是立即數表示的一種規則吧,或者可以理解為是一種語法規則。只要是十六進位制數的 最後加h 首位又是字母的,必須前面新增個0。這樣也不容易引起歧義。如果不...

彙編指令延時的精確解釋,組合語言延時程式怎麼解釋?

2 123 2 248us中,的 2即分別是指令mov r6,123 和指令nop各一秒,即是所內迴圈。248 2 200 1 50.001ms 中 2即是指令djnz r7,dly1的用時,248 2 200即外迴圈,最後那個 1即指令mov r7,200的用時,不是ret的用時。我也喜歡微控制器...