指令長度為
1樓:湯旺河邊
指令長度與定址方式有關係,規律或原則如下:
一、沒有運算元的指令,指令長度為1位元組。如。
es:ds:
cbwxlat
等。二、運算元只涉及暫存器的指令,指令長度為2位元組。如。
mov al,[si]
mov ax,[bx+si]
mov ds,ax
等。三、運算元涉及記憶體位址的指令,指令長度為3位元組。如。
mov al,[bx+1]
mov ax,[bx+si+3]
lea di,[1234]
mov [2345],ax
等。四、運算元涉及立即數的指令,指令長度為:暫存器型別+2。
8位暫存器,暫存器型別=1;16位暫存器,暫存器型別=2。如。
mov al,8 ;指令長度為2
mov ax,8 ;指令長度為3
等。五、跳轉指令,分3種情況,指令長度分別為位元組。
1、段內跳轉,指令長度=(目標位址-指令當前位址)+1jmp指令本身佔用1個位元組。
目標位址-指令當前位址)若能用1個位元組表示,則佔用1個位元組,整體指令長度為2位元組;如。
0113 jmp 0185 ;0185h-0113h=72h,72h可用1個位元組表示。
若需2個位元組表示,則佔用2個位元組,整體指令為3個位元組。如。
0113 jmp 0845 ;0845h-0113h=732h,732h需用2個位元組表示。
2、段間跳轉,指令長度為5位元組。如。
jmp 1234:5678
2樓:網友
mov ax,8本身就是乙個三位元組長的指令。
如果指令是mov al,8的話就是兩個位元組長,我想問題出在ax那吧。具體是什麼,自己去翻下8086的指令系統表就清楚了。
我想應該是mov ax,8這條指令操作碼佔了乙個位元組,8這個立即數佔了兩個位元組(因為是送到ax中,系統會把他當作兩位元組運算元處理)
3樓:網友
mov ax,8 對應的機器碼是b80800b8,08,00 不就是3嘛。
所以ip 就 增加了 3啊。
這是我在cmd 下 用debug 試一下出來的。
4樓:ins大流氓
指令1個位元組,資料16位系統佔2個位元組。
5樓:網友
因為是這樣。之所以這樣。
51微控制器指令長度,有兩位元組三位元組,指令暫存器長度是乙個位元組,指令長度等於指令暫存器長度不矛盾嗎?
6樓:網友
指令長度等於指令暫存器長度,這並不矛盾。對於51微控制器,執行指令時,是先取第乙個位元組的指令碼,也叫操作碼,進行解碼,然後執行。如果是單位元組指令就執行操作了。
如果是兩個位元組,或三個位元組的指令,就會再取出第二位元組,第三個位元組,第二,第三位元組通常是立即數,位址,偏移量等運算元,取出這些運算元後,就會進行計算,或按立即數,位址傳送資料了,是偏移量就計算目標位址然後跳轉了。
總結,51微控制器是逐一位元組取出指令碼的,並不是一下子全部取出二個,三個位元組的指令。而只有第乙個位元組才是操作碼,其餘是運算元。
cpu如何判斷指令長度
7樓:網友
那就要看cpu怎麼識別機器碼了,比如 mov al,00 的機器碼是。
1011 0000 0000 0000b (b000h)mov 的機器碼是 1011
al 的機器碼是 0000
cpu讀取一條指令,假如第乙個位元組是b0,那麼。
就是mov al,後面緊跟著的乙個位元組就是要傳進去的立即數(cpu判定這條指令長度2個位元組)
再者 mov al,[0000] 的機器碼是。
1010 0000 (後面16位0)
如果這個位元組是a0,那麼就是暫存器間接定址的mov al,後面緊跟著的16位就是位址偏移量。
cpu就判定這條指令長度3個位元組)
寫好後用debug反彙編,u命令。
1814:0000 33c0 xor ax,ax1814:0002 a08000 mov al,[0080]其中的 33c0 和 a08000 等就是指令的機器碼。
就看出來佔幾個位元組了。
微控制器中,什麼叫指令長度?
8樓:網友
指令長度就是一條指令的二進位數位的多少。例如51微控制器有8位,16位,24位指令。
8位:累加器、暫存器間的加、減、與、或等算術和邏輯運算指令,(3位操作碼可區分8種運算+3位操作碼可區分8個暫存器+其他定義)
16位:累加器、暫存器與乙個「立即數」之間的加、減、與、或等算術和邏輯運算指令,需要乙個8位二進位數,所以比8位指令長。
24位指令:與儲存器存取數有關的「直接位址」指令需要16位位址,加首位元組就要24位了,直接轉移和呼叫子程式指令,也需要16位位址。
綜上所述,指令長度與定址方式密切相關。
9樓:網友
乙個指令中包含的2進位**的位數,稱為指令長度。 指令長度=操作碼的長度+運算元位址的長度x運算元位址個數。
10樓:西門不敗
指令一般是 操作符+運算元1+【運算元】2+【運算元3】運算元2 和 運算元3 不是每個指令都有的這樣一來就有很多指令是1乙個運算元 有兩個運算元的於是就出現了指令長度這個概念。
11樓:俱懷逸興壯思飛欲上青天攬明月
指令長度是指乙個指令中包含的2進位**的位數。指令長度=操作碼的長度+運算元位址的長度。
微控制器是一種積體電路晶元,是採用超大規模積體電路技術把具有資料處理能力的**處理器cpu、隨機儲存器ram、唯讀儲存器rom、多種i/o口和中斷系統、定時器/計數器等功能整合到一塊矽片上構成的乙個小而完善的微型計算機系統,在工業控制領域廣泛應用。從上世紀80年代,由當時的4位、8位微控制器,發展到現在的300m的高速微控制器。
在8088系統中,讀取指令「add [2000h],ax」(指令長度為3b)和執行該指令各需要幾個匯流排週期?
12樓:網友
8088每個匯流排週期只能讀寫乙個位元組資料。攜碼所以讀取指令長度為3b的指令「add [2000h], ax」需要 3 個時鐘辯簡哪週期,執行時需要 4 個時鐘週期。
讀取指令是3個 儲存器讀 匯流排週期,執行時是2個 儲存器讀 匯流排週期和2個咐哪 儲存器寫 匯流排週期。
計算機指令長度
13樓:網友
不是吧,是cpu決定的吧。
補:那麼小?就算是那麼小也不能確定是16位的,應該由資料線位數決定。
計算機命令,什麼是計算機指令
人家問你開啟 登錄檔 的命令,你吧xscan也搬上來了,你不嫌累,我看的還嫌累呢 regedit cmd dos系統 ipconfig 好像是檢視ip之類的msconfig 這個是系統配置實用程式dxdiag dx的檢測 吧 什麼是計算機指令 計算機指令是指揮機器工作的指示和命令,程式是按一定順序排...
一條計算機指令用來,一條計算機指令中規定其執行功能的部分是什麼
d,程式就是指令集合,乙個完整的任務是由程式來完成的,也是由好多指令來完成 一條計算機指令中規定其執行功能的部分是什麼 一條計算機指令中規定其執行功能的部分是操作碼。操作碼指電腦程式中所規定的要執行操作的那一部分指令或字段 通常用 表示 其實就是指令序列號,用來告訴cpu需要執行哪一條指令。指令系統...
計算機指令與組合語言偽指令有何區別
計算機指令是cpu實際能夠執行的指令,而組合語言偽指令只是告訴彙編器該如何進行彙編的一些資訊 例如,在什麼位址存放指令,定義一些常數等等 不是處理器的指令。看看 http hi.機器指令指的是一系列的由01組成的二進位制編碼,只有cpu才知道是什麼意思,不過人們也可以通過乙個對照表將機器碼翻譯成我們...