8085程式解壓16位BCD碼,並將其儲存到連續位置
在這裡我們將看到如何從記憶體中獲取16位BCD資料並對其進行解壓,然後使用8085將其儲存到記憶體中。
問題陳述
編寫8085程式,從記憶體中獲取16位BCD數,然後透過解壓將其每個數字儲存到不同的位置。
討論
為了解決這個問題,我們將建立一個子程式,該子程式可以解壓1位元組BCD數並將其儲存到記憶體中,然後我們將該子程式使用兩次來儲存16位資料。該子程式將透過掩蓋高4位和低4位來分割數字,並將其儲存到記憶體中。
輸入
DE暫存器對中的1234
流程圖
程式
| 地址 | 十六進位制程式碼 | 標籤 | 助記符 | 註釋 |
|---|---|---|---|---|
| F000 | 31, 00, FC | | LXI SP,FC00 | 初始化堆疊指標 |
| F003 | 11, 34, 12 | | LXI D,ABCD | 載入16位數 |
| F006 | 21, 00, 90 | | LXI H,9000 | 指向目標地址 |
| F009 | 7B | | MOV A,E | 將E移入A |
| F00A | CD, 13, F0 | | CALL UNPACK | 解壓低位元組並存儲 |
| F00D | 23 | | INX H | 指向下一個位置 |
| F00E | 7A | | MOV A,D | 獲取高位元組 |
| F00F | CD, 13, F0 | | CALL UNPACK | 解壓高位元組並存儲 |
| F012 | 76 | | HLT | 終止程式 |
| F013 | D5 | UNPACK | PUSH D | 將DE壓入堆疊 |
| F014 | 57 | | MOV D,A | 將數字儲存到D中 |
| F015 | E6, F0 | | ANI 0FH | 掩蓋高4位 |
| F017 | 77 | | MOV M,A | 儲存低4位 |
| F018 | 7A | | MOV A,D | 再次獲取數字 |
| F019 | E6, F0 | | ANI F0H | 掩蓋低4位 |
| F01B | 07 | | RLC | 左移旋轉 |
| F01C | 07 | | RLC | 左移旋轉 |
| F01D | 07 | | RLC | 左移旋轉 |
| F01E | 07 | | RLC | 左移旋轉 |
| F01F | 23 | | INX H | 指向下一個位置 |
| F020 | 77 | | MOV M,A | 將高4位儲存到記憶體中 |
| F021 | D1 | | POP D | 從堆疊中彈出DE |
| F022 | C9 | | RET | 從子程式返回 |
輸出
| 地址 | 資料 |
|---|---|
| … | … |
| 9000 | 04 |
| 9001 | 03 |
| 9002 | 02 |
| 9003 | 01 |
| … | … |
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP