1樓:念憶
對計算機而言,移動即是複製。移動一個檔案到其它地方,也是先複製過去,再把原檔案刪除。
mov ds,ax 將ax中的資料賦值給ds,ax中的值不會消失。mov ax,data這句,如果是前面有assume ds:data的情況,是將地址值傳給ax。
由於彙編指令系統龐大,因而需構建指令系統體系,其指令數量龐大,格式複雜,可記憶性差等。指令中最難的是指令所支援的定址方式,其實質就是指令中運算元如何獲取。對於處理器而言,就是如何找到他所需的資料。
但對於計算機底層的組合語言而言,這種定址方式將涉及大量的計算儲存格式,與 複雜的儲存管理方式緊密相關,因而難以理解。最後,彙編指令還關係到如何影響標誌位,但處理器標誌位非常複雜,因而對其機制掌握就比較困難。
2樓:匿名使用者
mov dx,ax ;只是將ax中的值傳遞給了dx而ax並沒有發生變化,這是一種暫存器定址方式,所有的mov語句都是傳值不傳址,傳址要用lat語句才行,希望對你有用。
3樓:楊騰
值傳遞 地址傳遞指令是lea lds les
4樓:匿名使用者
要從相應的記憶體地址取值,然後傳給ax。所以是複製的一個副本到ax中
5樓:匿名使用者
只是將data中的資料傳值給ax了,不傳送地址
6樓:破曉崇明
你說的那是lea
mov把內容給ax,要是lea的話,就是把他的地址送過去
組合語言的程式開始都有 push ds mov ax,0 push ax 這三段有什麼作用?
7樓:永恆
code segment
assume cs:code
main proc far
push ds
mov ax,0
push ax
mov ah,2
mov dl,'l'
int 21h
retmain endp
code ends
end main
8樓:做而論道
在程式的開始,bai
在堆疊中壓入了du兩次,分zhi別是ds和0;
在程式的末dao尾,使用了專ret,就用到了壓入屬的內容,這樣就能結束程式,安全的返回dos。
想要弄清這幾個操作,就必須瞭解「磁碟作業系統」,即dos才行。
這已經不是「組合語言」的內容了。
9樓:匿名使用者
壓棧保護,作業系統的規範,要了解其意義,就必須知道作業系統,這個是作業系統的程式設計的"標準"...當然不同的作業系統之間是不一樣的了,所以才說彙編是可移植性依存於系統的....
10樓:小裙裙
起到現場保護的作用,push ds是把ds壓入棧保護,,,,
彙編源程式中的mov ax,dataseg mov ds,ax是什麼意思
11樓:匿名使用者
mov ax,dataseg ;將dataseg的段址取出mov ds,ax ;將該段址賦與ds
;此後,資料段就變成dataseg
至於dw 32 dup(0)
是定義32 個dword,並預填充為0
就是:dw 0,0,...,0 ;32個0
12樓:匿名使用者
mov ax,dataseg 是將標識為dataseg的資料區首地址傳給ax
mov ds,ax 暫存器賦值。因為8068/8088規定段暫存器不能直接賦值,必須要由暫存器給他傳值,因此想初始化資料段首地址必須要由ax中轉一下。
dw 32 dup(0)告訴編譯器記憶體中預留32個4位元組,並全部填充為0
組合語言中的返回指令rst問題,組合語言中的返回指令Rst問題
先澄清一下你問得模糊的地方。1 你說的 rst 返回指令應該是 ret 吧?2 sp 不叫堆疊指令,它是堆疊指標,估計是stack pointer的首字母。該指標總是指向堆疊的棧頂,即始終存放的是棧頂的地址。堆疊的工作原理可簡述為 後進先出 即lifo,last in first out。具體解釋請...
組合語言buff什麼意思,組合語言中 BUFF DB 60 DUP 是什麼意思?
組合語言中buff這個關鍵字,所以出現這個字母組合應該是一個變數,從字面上理解應該是與儲存器相關的一個變數,比如開闢一個緩衝區用於收發串列埠資料等等。 君威 不帶引號的?指從buff的位置開始預留指定位元組數的記憶體空間 帶引號的?指從buff的位置開始連續存放指定位元組數的?字元 帶引號的 指從b...
關於組合語言移植性的問題,關於組合語言中的LOOP指令
兄弟,你理解錯了,首先你要明白,組合語言是一種針對具體機器的低階語言,這裡說的不同機器一般來講是指cpu指令系統不相相容的兩種機器,比如常用的8086與51,dsp,arm,等等,他們的指令系統都不是通用的。自然移植到別的機器上不行,舉個例子來說吧,假如51,的p0埠可以用來點亮一盞燈,但是對808...