運算類的指令,無非就是加減乘除,而且是很簡單的算術

2021-01-12 張一星

算術運算類指令

算術運算類指令的功能是進行加、減、乘、除4種基本算術運算。它包括加法指令、減法指令、乘法指令、除法指令和十進位數調整指令。

1.加法指令

加法指令又分不帶進位的加法指令、帶進位的加法指令和加1指令。

(1)不帶進位的加法指令

不帶進位的加法指令的操作碼助記符是「ADD」。

指令格式:ADD A,操作數2

指令的功能是將操作數2與累加器A中的數據相加,結果保存在A中。

不帶進位的加法指令有4條,各條指令的形式和功能如下:

下面舉兩個例子來說明不帶進位的加法指令的功能。

① ADD A,#36H。在指令執行前,如果累加器A中的數據為56H,那麼指令執行後,累加器A中的數據為8CH(36H+56H)。

② ADD A,R6。在指令執行前,如果累加器A 中的數據為78H(01111000),R6 中的數據為89H(10001001),那麼指令執行後,相加得到的數據為101H(100000001),由於累加器A是一個8位寄存器,所以只能存儲8位數00000001(01H),而最高位D7的進位會保存在PSW的進位標誌位(CY)中,讓(CY)=1,另外兩個數據的低4位相加(1000+1001)時,D3位會向高位D4位進位,在進位的同時會將PSW的輔助進位標誌位(AC)置「1」。

(2)帶進位的加法指令

帶進位的加法指令的操作碼助記符是「ADDC」。

指令格式:ADDC A,操作數2

指令的功能是將操作數2與累加器A中的數據相加,再與PSW中CY位的數據相加,結果保存在累加器A中。

帶進位的加法指令有4條,各條指令的形式和功能如下:

下面舉例說明帶進位的加法指令的功能。

例如:ADDC A,#36H

在指令執行前,如果累加器A中的數據為56H,寄存器PSW中CY位的數據為「1」,那麼指令執行後,累加器A中的數據為8DH(36H+56H+1)。

(3)加1指令

加1指令又稱增量指令,它的操作碼助記符是「INC」。

指令格式:INC 操作數

指令的功能是將操作數加1,結果仍保存在該操作數中。加1指令有5條,各條指令的形式和功能如下:

下面舉例說明加1指令的功能。

例如:INC @R0

在指令執行前,如果寄存器R0中的地址為56H,56H單元中的數據為35H,那麼指令執行後,56H單元中的數據為36H。

2.減法指令

減法指令又分帶借位的減法指令和減1指令。

(1)帶借位的減法指令

帶借位的減法指令的操作碼助記符是「SUBB」。

指令格式:SUBB A,操作數2

指令的功能是將累加器A中的數據減去操作數2,再減去PSW中CY位的數據,結果保存在累加器A中。

帶借位的減法指令有4條,各條指令的形式和功能如下:

下面舉例說明帶借位的減法指令的功能。

例如:SUBB A,R6

在指令執行前,如果累加器A中的數據為89H,寄存器R6中的數據為78H,CY位中的數據為1,那麼指令執行後,累加器A中的數據為10H(89H78H1)。

如果不需要借位,可先將CY位清0,清0指令將在後面介紹。

(2)減1指令

減1指令的操作碼助記符是「DEC」。

指令格式:DEC 操作數

指令的功能是將操作數減1,結果仍保存在該操作數中。

減1指令有4條,各條指令的形式和功能如下:

下面舉例說明減1指令的功能。

例如:DEC @R0

在指令執行前,如果寄存器R0中的地址為56H,56H單元中的數據為35H,那麼指令執行後, 56H單元中的數據為34H。

3.乘法指令

乘法指令的操作碼助記符是「MUL」。

乘法指令只有1條,該條指令的形式和功能如下:

下面以一個程序段為例來說明乘法指令的功能。例如:

MOV A,#36H

MOV B,#07H

MUL AB

上面的第 1 條指令是將數據 36H(00110110)送到累加器 A 中;第 2 條指令是將數據 07H (00000111)送到寄存器B中;第3條指令是將A和B中的數據相乘(00110110×00000111);將相乘的結果0000000101111010(017AH)的低8位(7AH)保存在A中,高8位(01H)保存在B中。

4.除法指令

除法指令的操作碼助記符是「DIV」。

除法指令只有1條,該條指令的形式和功能如下:

下面以一個程序段為例來說明除法指令的功能。例如:

MOV A,#0FBH

MOV B,#12H

DIV AB

上面的第 1 條指令是將數據 0FBH(11111011)送到累加器 A 中;第 2 條指令是將數據 12H (00010010)送到寄存器B中;第3條指令是將A和B中的數據相除(11111011÷00010010);得到的商1101(0DH)保存在A中,餘數10001(11H)保存在B中。

5.十進位數調整指令

單片機在對十進位數進行加法運算時,用BCD碼(由4位二進位數構成)來表示十進位數,再對BCD碼進行加法運算,得到的結果仍要用BCD碼表示,但有時得到的結果可能不是BCD碼。例如:

在例(1)中,兩個BCD碼相加後的運算結果仍是BCD碼;在例(2)中,兩個BCD碼相加後的結果不是BCD碼,因為BCD碼只有9個(0000~1001),1110不是BCD碼;在例(3)中,兩個BCD碼相加後的結果是錯誤的BCD碼,因為BCD碼只有4位,如果把10001當作是2位BCD碼,還原就成了11,結果錯誤。採用十進位數調整指令可以解決這個問題。

十進位數調整指令又稱BCD調整指令,它的操作碼助記符是「DA」。

十進位數調整指令的形式和功能如下:

下面以一個BCD碼加法程序段為例來說明十進位數調整指令的功能。例如:

MOV A,#56H

ADD A,#67H

DA A

上面的第1條指令是將數據56H送到累加器A中;第2條指令是將A中的數據56H(01010110)與數據67H(01100111)相加,得到的結果是BDH(10111101),顯然結果不是BCD碼(因為1011和1101都不是BCD碼);第3條指令是將第2條指令相加後的運算結果BDH(10111101)進行BCD調整。調整過程如下:

從上面的豎式中可以看出,指令先判斷相加結果的低4位是否大於9(1001),若大於9,則將低4位加6(0110),然後判斷低4位加6後得到結果的高4位是否大於9,若大於9,再將高4位加6,這樣修正的結果是100100011(123H=56H+67H)。

在進行普通的加法運算時,後面不用加「DA A」指令;如果在加法運算指令後加上該指令,進行的加法運算將是BCD加法運算。

相關焦點

  • 使用C/C++進行加減乘除算術運算
    算術運算符作用:用於處理四則運算算術運算符包括以下符號:使用示例示例1://加減乘除 double d2 = 0.25; cout << d1 / d2 << endl; system("pause"); return 0;}總結:在除法運算中
  • 西門子s7-200算術、邏輯運算指令
    點擊上方並關注☝☝:工控PLC(分享朋友圈支持一下)目前各種型號的plc普遍具備較強的運算功能和其他PLC不同,S7—200 PLC對算術運算指令來說,在使用要注意存儲單元的分配。建議大家在使用算術指令和數學指令時,最好用LAD形式編程。運算指令包括加法、減法、乘法、除法、數學函數指令、增減和邏輯運算指令。一、加法1、整數加法+I,整數加法指令。
  • 跟電師傅學單片機(13):單片機算術運算類指令圖文講解
    二:十進位調整指令(1條)DA A單片機十進位調整指令,功能是在進行BCD碼加法運算時,用來對BCD碼的加法運算結果自動進行修正,修正結果存放在A中。注意:1:在進行BCD加法運算時,在單片機加法指令ADD或ADDC指令後緊跟著DA A指令,單片機自動判斷和修正。2:對BCD碼的減法運算時不能用DA A指令不進行修正,不適用減法指令。3:影響PSW中CY、AC、OV標誌位。
  • 跟電師傅學單片機(12):單片機算術運算加減法指令圖文新解
    單片機算術運算類指令(24條)單片機算術運算指令是8位二進位數進行加、減、乘、除四則運算,以及加1、減1、十進位調整等。本節介紹其中加減法12條指令。加減法指令示意圖1:不帶進位加法指令(4條)ADD:不帶進位標誌CY的加法
  • 婚姻的方程式,無非就是:加減乘除開根號N次方
    婚姻的方程式,無非就是:加減乘除開根號N次方。其實好多人在走入婚姻之後,總想著,要讓自己的幸福美滿,所有的一切都是double,double再double。什麼是婚姻,它不過是將所有的好與不好,通通地雜糅在一起,然後通過加減乘除開根號再來一個N次方。這就是所謂的婚姻了,最後的結果可能有好有壞,但是它絕對不會是複製粘貼的,大眾化物品。也許婚姻相同,但是每個人得到的與在意的東西,都是不一樣的。
  • 珠算術的四則方法,竟然比加減乘除還好用,知道算盤發明時間嗎?
    已珠算術至遲在元末已經產生。1366年在陶宗儀所著《南村輟耕錄》中,有關於珠算盤的明確記載。 珠算發明之後,珠算術的四則方法逐漸代替了籌算的加減乘除運算方法。珠算術的加、減法口訣相當重要。在明代的珠算術中稱加法口訣為「上法訣」,稱減法口訣為「退法決」,很是簡便。明代的珠算術著作,現在流傳下來的已經算的廣泛應用 我國數學計算方法,隨著商業的發展和算法本身由繁到簡發展條件的成熟,到了明代,珠算普遍得到推廣,逐漸取代了籌算。
  • 簡單的整數加減乘除運算的例題過程解析
    02簡單的整數加減乘除運算--例題解析03最後總結該內容主要考察的內容是加減乘除的運算規則,其中最後一道題考察了等差數列的計算方法,如果大家都對解析過程有疑問的話,隨時可以私信我,我會逐一給予解釋。
  • Python語言教程算術運算與算術表達式的介紹
    Python語言教程算術運算與算術表達式的介紹 Python語言教程在算術運算符與算術的表達方式是我們值得學習的知識。下面我們就來詳細的看看Python語言教程中的相關信息。
  • 數字0和1,改變了加減乘除,使運算更加簡單
    加減乘除你真的運用自如嗎?給你一套簡單的小學數學題,能否在3分鐘內算出來?例如:99÷98×97-96=?3分鐘時間快到了的情況下,你是否算出來了?我這裡提供一種算法,是上面第2種算法的衍生物,算是加減乘除的基本應用。
  • python爬蟲10、算術運算符
    叫做算術運算符 算術運算符也即數學運算符,用來對數字進行數學運算,比如加減乘除。下表列出了 Python 支持所有算術運算符。 取模運算 所謂取模運算,就是計算兩個數相除之後的餘數,符號是%。如a % b就是計算a除以b的餘數。
  • [GO語言基礎] 四.算術運算、邏輯運算、賦值運算、位運算及編程練習
    這篇文章將介紹運算,包括算術運算、邏輯運算、賦值運算、位運算及編程練習。 這系列文章入門部分將參考「尚矽谷」韓順平老師的視頻和書籍《GO高級編程》,詳見參考文獻,並結合作者多年的編程經驗進行學習和豐富,且看且珍惜!
  • 小學教師:撲克牌玩24點算術遊戲
    其實,他們是在用撲克牌玩24點算術遊戲,這也是數學老師張先彬教學方法裡重要的一部分。  「比練習綜合算術好玩多了」  上課前,張先彬先把3副撲克牌分發到了班上的12位同學手中,然後問了一個與課堂似乎不太相干的問題:「撲克牌,大家都聽說過哪些玩法?」問題一出,課堂上突然活躍了起來,「我知道乾瞪眼!」「我知道鬥地主!」「我知道升級!」
  • 小學生「分數」加減乘除運算要點及技巧
    「分數的加減乘除」是小學五年級學生要掌握的基本計算技能。因為分數本身數字空間小,多數題只要方法掌握熟練,很多學生學起來會輕而易舉。但實際上有些兒學生在學習過程中卻出現各種各樣的錯誤。及時地發現學生在計算中出現的問題,找出錯誤原因,採取有效的措施來解決,是打好數學計算能力的基礎。
  • 2021考研大綱:管理類聯考初等數學算術考研大綱解析
    2021考研大綱:管理類聯考初等數學算術考研大綱解析 2021考研大綱是對201年碩士研究生考試科目的考試範圍、考試要求、考試形式、試卷結構等權威政策指導性考研用書。
  • 小學趣味數學課:用撲克牌玩24點算術遊戲
    其實,他們是在用撲克牌玩24點算術遊戲,這也是數學老師張先彬教學方法裡重要的一部分。  「比練習綜合算術好玩多了」  上課前,張先彬先把3副撲克牌分發到了班上的12位同學手中,然後問了一個與課堂似乎不太相干的問題:「撲克牌,大家都聽說過哪些玩法?」問題一出,課堂上突然活躍了起來,「我知道乾瞪眼!」「我知道鬥地主!」「我知道升級!」
  • python運算符優先級,加減乘除只是基礎,學習python第2天
    在計算機編程中少不了運算,而python運算符有哪些呢?python運算符優先級順序又是怎麼樣的?就像數學一樣,加減乘除只是基礎,了解python運算符才能解決實際性的問題。python運算符及其優先級python運算符及其優先級python程序中支持多種運算符,常見的有加減乘除、賦值運算符、算術運算符、邏輯運算符
  • 重慶一小學趣味數學課:撲克牌玩24點算術遊戲
    其實,他們是在用撲克牌玩24點算術遊戲,這也是數學老師張先彬教學方法裡重要的一部分。  「比練習綜合算術好玩多了」  上課前,張先彬先把3副撲克牌分發到了班上的12位同學手中,然後問了一個與課堂似乎不太相干的問題:「撲克牌,大家都聽說過哪些玩法?」問題一出,課堂上突然活躍了起來,「我知道乾瞪眼!」「我知道鬥地主!」「我知道升級!」
  • FANUC 宏程序 講解 第七課 (算術 & 邏輯運算)
    課前,分享一句話「人生如果錯了方向,停止就是進步"。人,總是很難改正自己的缺點,人,也總是很難發現自己的錯誤,有時,明知錯了,卻欲罷不能,一錯再錯,把握正確的方向,堅守自己的原則,世界上的誘惑很多,天上永遠不會掉餡餅,不要因為貪圖一時的快樂而付出慘痛的代價,如果發現錯了,一定要止步。算術和邏輯運算在下方列出的運算可以在變量中運行。
  • 分享些MySQL中算術運算符的靈活應用案例
    算術運算符是SQL中最基本的運算符,MySQL自然不能缺少對其的支持。既然其名稱中有「算術」二字,給人的第一感覺當然是支持數字型的運算。所以我們先從數字著手了解它。【1】建表我的習慣一直是以案例作為學習的切入點。
  • 為什麼小學算術好,中學以後數學反而不好?
    Spelke以及法國國家健康與醫學研究院的科學家、數感研究的領頭人Stanislas Dehaene發表在《科學》(Science)上的一項經典研究指出,在進行加減乘除時,大腦中和語言有關的部分被激活了。學習九九乘法表更像是背課文,而不是在練習真正的數學技能。作為數學的基礎,加減乘除的運算可能更接近文科。