已解決一個彙編的問題
提問者:jx二十六 | 瀏覽次 | 提問時間:2017-03-13 | 回答數量:5
不能用立即數傳送給 SS 段寄存器,需用通用寄存器轉一下mov ax,6180hmov ss,ax
已有5條答案
不懂彙編...
對內存了解的也不是很多...
樓上的應該是對的吧.. [s:470]
_謀情_害命_
回答數:109 | 被采納數:141
作業已經交上,讓老師的紅筆來證明對錯吧,謝謝樓主的幫忙
1) mov ecx, 100<---------100傳入ecx
(2) mov eax, 200<---------200傳入eax
(3) push eax <------------eax先進了
(4) push ecx<-------------再來是ecx
(5) pop ebx<--------------從棧頂取出一個,也是最後進去的那一個,結果存到ebx
(6) pop ecx<--------------從棧頂取出一個,也就是剛剛先進去的那個了,結果存到ecx
你那直接傳送是不行的
下麵是我舉的例子
本人不才 初中畢業
要是你看不懂也沒辦法 [s:460]
1,EAX在乘法和除法指令中被自動使用。通常稱之為擴展累加寄存器。
2,CPU自動使用ECX作為循環計數器。
3,ESP尋址堆棧(一種係統內存結構)上的數據,ESP寄存器一般絕不應該用於算術運算和數據傳送,通常稱之為擴展堆棧指針寄存器。
4,ESI和EDI通常用於內存數據的高速傳送,通常稱之為擴展源指針和目的指針寄存器。
5,EBP由高級語言來引用函數參數和局部變量。除非用於高級語言設計技巧中,EBP一般不用於算術運算和數據傳送中,通常稱之為擴展幀指針寄存器。
16位段寄存器:
CS, SS, DS, ES, FS, GS.
段寄存器被用於存放段的基址,段是一塊預分配的內存區域。有些段存放著程序的指令(代碼),有些則存放著變量(數據),另外還有其他的段如堆棧段存放著函數變量和函數參數。
指令指針:
EIP(或稱為指令指針)寄存器包含著下一條要執行的指令的地址。
EFLAGS寄存器
EFLAGS(或Flags)寄存器由控製CPU的操作或反映CPU某些運算的結果的獨立二進製位組成。
某些標誌被設置表示使其值等於1,被清除表示著其等於0。
狀態標誌:狀態標誌反映了CPU執行的算術和邏輯操作的結果,包括溢出,符號,零,輔助進位,奇偶和進位標誌:
1,進位標誌(CF):在無符號運算的結果無法容納於目的操作數時被設置。
2,溢出標誌(OF):在有符號運算的結果太寬(位數太多)而無法容納於目的操作數中時被設置。
3,符號標誌(SF):在算術或邏輯運算產生的結果位負時被設置。
4,零標誌(ZF):在算術或邏輯運算中產生的結果位零時被設置。
5,奇偶標誌(PF):在統計一個數值內值等於1的位數時,如果為1的總位數為偶數,則設置該標誌,否則清除該標誌。
6,輔助進位標誌(AF):在算術運算導致8位操作數的位3到位4產生進位時被設置。
正在學微機原理,裏麵有一個彙編的問題找不到答案。請知道的來指導一下
判斷指令中不合法的原因所在
MOVSS, 6180H
好象是代碼段寄存器不能用MOV 指令啊
是不是SS也不能用呢,到底是什麼原因呢。
大俠來指點下了。