1樓:墨汁諾
jb是指判斷位變數轉移指令,ja(jump above)大於則轉移到目標指令執行。
jb p1.3,l1意思就是說判斷p1.3的值是不是“1” 如果是就跳轉到l1程式執行,如果不是就順序執行下一條指令。
jnae: jump not above and equal 低於,即不高於且不等於則轉移,但執行這條語句之前先用cmp來比較2個無符號數,cmp比較無符號數後影響的是cf,所以jb應該是通過cf來判斷的(注意:無符號數的比較在這裡用高於和低於,有符號數的比較在這裡用大於小於)。
編譯背景
任何一種微處理器(cpu)在設計時,就已規定好自己特定的指令系統,這種指令系統的功能也就決定了由該微處理器構成的計算機系統及其基本功能。指令系統中所設計的每條指令都對應著微處理器要完成的一種規定功能操作,即這些指令功能的實現都是由微處理器中的物理器件完成的。
要使計算機完成一個完整的任務,就需要執行一組指令,這組指令通常稱為程式。計算機能夠執行的各種不同指令的集合就稱為處理器(cpu)的指令系統。
2樓:
是8086的話``
jb其實就是 jnae: jump not above and equal 低於,即不高於且不等於則轉移
但執行這條語句之前先用cmp來比較2個無符號數,cmp比較無符號數後影響的是cf,所以jb應該是通過cf來判斷的(注意:無符號數的比較在這裡用高於和低於,有符號數的比較在這裡用大於小於)
3樓:
不要糾纏在具體是哪幾個bit.
jb是用來比較兩個無符號整數時, 目標運算元小於源運算元時會發生的跳轉.
b就是below的意思.
4樓:土豆遇見熊
jb其實就是 jnae: jump not above and equal 低於,即不高於且不等於則轉移
但執行這條語句之前先用cmp來比較2個無符號數,cmp比較無符號數後影響的是cf,所以jb應該是通過cf來判斷的(注意:無符號數的比較在這裡用高於
組合語言中jb,ja,是什麼意思
5樓:a羅網天下
jb是指判斷位變數轉移指令,ja(jump above)大於則轉移到目標指令執行。
jb p1.3,l1意思就是說判斷p1.3的值是不是“1” 如果是就跳轉到l1程式執行,如果不是就順序執行下一條指令。
低於則跳轉,適用於無符號數的比較,要求cf=1
ja它是通過判斷兩個無符號數之間的大小關係,如果cf∨zf = 0,說明大於,則轉移。
例如:mov ah,0x1
mov al,0x0
cmp ah,al
ja l1
——ah大於al 則跳轉到l1
傳送指令
包括通用資料傳送指令mov、條件傳送指令cmovcc、堆疊操作指令push/pusha/pushad/pop/popa/popad、交換指令xchg/xlat/bswap、地址或段描述符選擇子傳送指令lea/lds/les/lfs/lgs/lss等。
邏輯運算
這部分指令用於執行算術和邏輯運算,包括加法指令add/adc、減法指令sub/sbb、加一指令inc、減一指令dec、比較操作指令cmp、乘法指令mul/imul、除法指令div/idiv、符號擴充套件指令cbw/cwde/cdqe、十進位制調整指令daa/das/aaa/aas、邏輯運算指令not/and/or/xor/test等。
移位指令
這部分指令用於將暫存器或記憶體運算元移動指定的次數。包括邏輯左移指令shl、邏輯右移指令shr、算術左移指令sal、算術右移指令sar、迴圈左移指令rol、迴圈右移指令ror等。
組合語言比機器語言的可讀性要好,但跟高階語言比較而言,可讀性還是較差。不過採用它編寫的程式具有儲存空間佔用少、執行速度快的特點,這些是高階語言所無法取代的。在實際應用中,是否使用組合語言,取決於具體應用要求、軟體開發時間和質量等方面作權衡。
6樓:drar_迪麗熱巴
組合語言中jb、ja都是條件轉移指令,常用於比較兩個無符號數的大小,判斷條件是cf、zf狀態的組合。為確定cf、zf狀態,轉移前用cmp指令設定標誌位(cmp a,b)。
當計算機的硬體不認識字母符號,這時候就需要一個專門的程式把這些字元變成計算機能夠識別的二進位制數。因為組合語言只是將機器語言做了簡單編譯,所以並沒有根本上解決機器語言的特定性,所以組合語言和機器自身的程式設計環境息息相關,推廣和移植很難。
由於彙編指令系統龐大,因而需構建指令系統體系,其指令數量龐大,格式複雜,可記憶性差等。指令中最難的是指令所支援的定址方式,其實質就是指令中運算元如何獲取。對於處理器而言,就是如何找到他所需的資料。
但對於計算機底層的組合語言而言,這種定址方式將涉及大量的計算儲存格式,與 複雜的儲存管理方式緊密相關,因而難以理解。最後,彙編指令還關係到如何影響標誌位,但處理器標誌位非常複雜,因而對其機制掌握就比較困難。
傳送指令
包括通用資料傳送指令mov、條件傳送指令cmovcc、堆疊操作指令push/pusha/pushad/pop/popa/popad、交換指令xchg/xlat/bswap、地址或段描述符選擇子傳送指令lea/lds/les/lfs/lgs/lss等。
邏輯運算
這部分指令用於執行算術和邏輯運算,包括加法指令add/adc、減法指令sub/sbb、加一指令inc、減一指令dec、比較操作指令cmp、乘法指令mul/imul、除法指令div/idiv、符號擴充套件指令cbw/cwde/cdqe、十進位制調整指令daa/das/aaa/aas、邏輯運算指令not/and/or/xor/test等。
7樓:匿名使用者
在x86組合語言中,這是對無符號數的跳轉判定,jb/ja分別是小於則跳/大於則跳;對於有符號數的跳轉判定,分別是jl/jg.
8樓:匿名使用者
jb就是轉移指令 jb bit,rel 直接位為一則跳轉
9樓:匿名使用者
1、在組合語言中,dw表示字型別的變數,每個後續的資料佔用兩個位元組;db是位元組型別,即每個變數分配一個位元組的記憶體。2,d1dw 1234h和d2db12h,34h在實際操作中是不一樣的。額外的儲存在1000h。
當使用d1dw 1234h時,1000h儲存在34h。
如何彙編 jb 指令?
10樓:土豆遇見熊
jb其實就bai是 jnae: jump not above and equal 低於,即不高於du且不等於則轉移
但執行zhi這條語句之前dao先用cmp來比版較2個無符號權數,cmp比較
無符號數後影響的是cf,所以jb應該是通過cf來判斷的(注意:無符號數的比較在這裡用高於
微控制器組合語言指令中,條件轉移指令jbc與jc的區別是什麼?
11樓:墨汁諾
一、作用不同:
jbc指令判斷該位為1則轉移,同時將該位置0。
jc指令判斷有借位則轉移,也就是說兩數相減為負轉移。
二、含義不同:
jbc指令相當與jb和clr (位) 二條指命的組合,它可在轉移的同時清除被判位;
jc指令只能對cy進位位進行判斷為高後轉移,並不能清除它,二條指令都當被測位為高進時進行相對轉移。
三、位置不同:
jc是判斷c進位標誌是否為1,為1則跳轉到指定位置。
jbc是判斷可位定址區域內指定位是否為1,為1則跳轉到指定位置,並同時清除該位(置0)。
12樓:匿名使用者
jbc指令判斷該位為1則轉移,同時將該位置0
jc指令判斷有借位則轉移,也就是說兩數相減為負轉移。
13樓:亂七胡說八糟亂想
jbc指令相當與 jb 和 clr (位) 二條指命的組合,它可在轉移的同時清除被判位,jc 指令只能對cy進位位進行判斷為高後轉移,並不能清除它. 二條指令都當被測位為高進時進行相對轉移.
14樓:匿名使用者
jc是判斷c進位標誌是否為1,為1則跳轉到指定位置。
jbc是判斷可位定址區域內指定位是否為1,為1則跳轉到指定位置,並同時清除該位(置0)。
15樓:還收藏的小屁孩
jbc除了對標誌位c進行判定是否為1外,還要做一個動作,就是將c清零!
也就是說,在c為1時,jbc判定完要清零
16樓:
jbc 是對位進行判斷
jc只判斷進位標誌位(cy)
17樓:
jbc 是對位判斷
jc判斷進位位標誌
組合語言中 jnb的用法是什麼啊?
18樓:津人依夢談娛樂
jnb指令的格式: jnb bit ,rel;用法是,判斷bit位,即直接定址位,為“0”則轉移,否則順序執行。
這段程式中jnb的用法是,判斷acc.7,即acc的第7位,如果為“0”,則跳轉到post程式處,反之,順序執行。
必須指出,條件轉移指令轉移地址的偏移量限制在-128~+127位元組範圍內,採用相對轉移方式(相對轉移指令是指跳轉時以當前地址為基準加上相對偏移量進行跳轉,一般是在本地址段內跳轉。如果需要跳轉到較遠的地方如跳到另一個地址段,就需要加上跳轉的目標段地址)。
擴充套件資料
組合語言優缺點:
優點組合語言作為機器語言之上的第二代程式語言:
1)可以輕鬆的讀取儲存器狀態以及硬體i/o介面情況
2)編寫的**因為少了很多編譯的環節,可以能夠準備的被執行
3)作為一種低階語言,可擴充套件性很高 。
缺點1)因為**非常單調,特殊指令字元很少,所以造成了**的冗長以及編寫的困難
2)因為彙編仍然需要自己去呼叫儲存器儲存資料,很容易出現bug,而且除錯起來也不容易
3)就算完成了一個程式,後期維護時候也需要耗費大量的時間。
4)因為機器的特殊性造成了**相容性差的缺陷。
第四章 80c51的指令系統 4.7 位操作類指令
19樓:匿名使用者
這裡jnb acc.7,post就是當累加器a的最高位為“0”時轉移到post,acc是累加器的意思。acc.7就是累加器的最高位。
20樓:通路快建電子
jnb用法:
如:cmp ax,bx。
jnb check(check為某標號)。
也就是如ax >=bx,則轉移到check。
轉移條件是:cf=0(針對無符號數)。
jnb:位狀態不為1時轉移目標程式,否則不轉移。
21樓:徐志尚
acc.7不為1就跳轉,這是位條件轉移類指令大概看來,你這程式是要判斷一個數是否為正,但程式不完整jb和jnb為位操作指令,根據後面的第一運算元(位地址)的情形,進行跳轉或順序執行
acc是可以位定址的sfr,對應各位是acc.0~acc.7,絕對不可以寫成a.0~a.7
22樓:做而論道
jnb 是:指定位,為零,轉移。。。
組合語言中st指令什麼意思組合語言中,ST指令什麼意思?
st是store的簡寫,ld是load簡寫,前面一個是寫,後面一個是讀。st是源暫存器 儲存區,ld是儲存區 目的暫存器。字資料傳送指令 ld,st 這是最簡單的資料傳送指令,不用考慮符號位的問題,直接以機器的位長存取資料。ld 從記憶體中取32位字資料放人暫存器,st將暫存器中的32位字資料儲存到...
彙編的ADD指令組合語言中ADD加法指令的問題
為你解答 你使用哪個暫存器啊?就替你選擇使用r5暫存器吧 另外暫存器加1功能 的實現的 最好使用現成的微控制器本身就有的加1指令 inc r5 就可以實現暫存器r5的加1 如果使用 add指令 一條完成不了 add指令必須以累加器a做為目的運算元 需要用到 mov a,r5 add a,1 mov ...
組合語言中ptr的作用是什麼,組合語言中CMP的作用是什麼?
ptr應該就是pointer 說明地址指標型別。當兩個運算元型別均不明確時,必須用byte ptr 位元組屬性 或word ptr 字屬性 將一個儲存器運算元定義為位元組或字型別。如 mov byte ptr si oah 指明 si 為位元組型別 在沒有暫存器名存在的情況下,用操作符 x ptr ...