8085程式用於乘以兩個8位數(移位加法方法)
現在讓我們來看一個英特爾8085微處理器的程式。在這個程式中,我們將看到如何使用移位加法方法來乘以兩個數字。
問題陳述:
編寫8085組合語言程式,使用移位加法方法乘以兩個8位數。
討論:
移位加法方法是一種高效的過程。在這個程式中,我們從記憶體位置8000H和8001H獲取數字。16位結果儲存在8050H開始的位置。
在這種方法中,我們將第一個數字放入DE暫存器對中。實際數字放在E暫存器中,D暫存器儲存00H。第二個數字被取入A暫存器。由於數字是8位數,因此我們將累加器的內容移位8次。當旋轉時進位標誌被設定時,DE的內容將與HL相加。最初HL暫存器對將儲存0000H。然後HL本身也與HL相加。因此結果將被生成。
輸入:
| 地址 | 資料 |
|---|---|
| . . . | . . . |
| 8000 | 25 |
| 8001 | 2A |
| . . . | . . . |
流程圖:

程式:
| 地址 | 十六進位制程式碼 | 標籤 | 助記符 | 註釋 |
|---|---|---|---|---|
| F000 | 21, 00, 80 | LXI H,8000H | 指向第一個運算元 | |
| F003 | 5E | MOV E,M | 將第一個運算元載入到E | |
| F004 | 16, 00 | MVI D,00H | 清除D暫存器 | |
| F006 | 23 | INX H | 指向下一個位置 | |
| F007 | 7E | MOV A,M | 獲取下一個運算元 | |
| F008 | 0E, 08 | MVI C,08H | 用08H初始化計數器 | |
| F00A | 21, 00, 00 | LXI H, 0000H | 清除HL暫存器對 | |
| F00D | 0F | LOOP | RRC | 將累加器內容向右旋轉 |
| F00E | D2, 12, F0 | JNC SKIP | 如果進位標誌為0,跳轉到SKIP | |
| F011 | 19 | DAD D | 將DE與HL相加 | |
| F012 | EB | SKIP | XCHG | 交換DE和HL |
| F013 | 29 | DAD H | 將HL與HL本身相加 | |
| F014 | EB | XCHG | 再次交換DE和HL的內容 | |
| F015 | 0D | DCR C | 遞減C暫存器 | |
| F016 | C2, 0D, F0 | JNZ LOOP | 如果Z=0,跳轉到LOOP | |
| F019 | 22, 50, 80 | SHLD 8050H | 儲存結果 | |
| F01C | 76 | HLT | 終止程式 |
輸出:
| 地址 | 資料 |
|---|---|
| . . . | . . . |
| 8050 | 12 |
| 8051 | 06 |
| . . . | . . . |
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP