8085 编程

2024年8月29日 | 阅读 8 分钟

让我们看一些简单的例子来演示 8085 的一些重要指令的用法。

程序中给出的内存地址用于特定的微处理器套件。 这些地址可以更改以适应您系统中可用的微处理器套件。

在内存中存储 8 位数据

程序

使用直接寻址在内存中存储 8 位数据

使用间接寻址在内存中存储 8 位数据

添加两个 8 位数字

示例

(2501 H) = 99H 
(2502 H) = 39H 
Result (2503 H) = 99H + 39H = D2H  
Since,
   1 0 0 1 1 0 0 1 (99H) 
 + 0 0 1 1 1 0 0 1 (39H) 
   1 1 0 1 0 0 1 0 (D2H)
  

程序

减去两个 8 位数字

示例

(2501 H) = 49H 
(2502 H) = 32H 
Result (2503 H) = 49H - 32H = 17H  

程序

添加两个 16 位数字

将内存位置 2501H 和 2502H 中的 16 位数字添加到内存位置 2503H 和 2504H 中的 16 位数字。 要相加的两个数字的最高有效八位字节位于内存位置 2502H 和 4004H。 将结果存储在内存位置 2505H 和 2506H 中,最高有效字节位于内存位置 2506H 中。

示例

(2501H) = 15H
(2502H) = 1CH
(2503H) = B7H
(2504H) = 5AH

Result = 1C15 + 5AB7H = 76CCH

(2505H) = CCH
(2506H) = 76H

程序

使用 ADD 和 ADC 指令添加两个 16 位数字

使用 DAD 指令添加两个 16 位数字

减去两个 16 位数字

示例

(2500H) = 19H
(2501H) = 6AH
(2504H) = 15H (2503H) = 5CH
Result    = 6A19H ? 5C15H = OE04H
(2504H) = 04H
(2505H) = OEH 

程序

添加两个内存位置的内容

示例

(2500H) = 7FH
(2501H) = 89H
Result    = 7FH + 89H = lO8H
(2502H) = 08H
(2503H) = 01H 

程序

查找数字的 1 的补码

要获得数字的 1 的补码,其 0 位替换为 1,1 替换为 0。

示例 1

(2501H) = 96 H = 1001 0110
			(9)    (6)
One's complement = 0110 1001 = 69 H
Result = (2502H) = 69H

示例 2

(2501H) = E4H
Result = (2502H) = 1BH

程序

该数字放置在内存位置 2501 H 中。

结果存储在内存位置 2502 H 中。

查找数字的 2 的补码

通过将 1 添加到数字的 1 的补码来获得数字的 2 的补码。

示例

To find the two's complement of 96.
96 = 1001 0110 
1's complement = 0110  1001 = 69
		 +     0000  0001 
2's complement = 0110  1010 = 6A   

程序

该数字放置在内存位置 2501 H 中。

结果要存储在内存位置 2502 H 中。

计算数字中 1 的个数

示例

2501 H = 04	
2502 H = 34 H
2503 H = A9H
2504 H = 78H
2505 H = 56H
Result = 2503 H = A9H

程序

计算寄存器 D 的内容中 1 的个数,并将计数存储在寄存器 B 中。

找到两个数字中较大的一个

示例

2501H = 98 H
2502H = 87H
Result = 98H (2503H)

程序

第一个数字 98H 放置在内存位置 2501 H 中。
第二个数字 87H 放置在内存位置 2502H 中。
结果存储在内存位置 2503 H 中。

LXI H, 2501H : "Address of first number in H-L pair"
MOV A, M	 : "1stt number in accumulator"
INX H	     : "Address of 2nd number in H-L pair"
CMP M	     : "compare 2nd number with 1st number"
JNC AHEAD	 : "No, larger is in accumulator. Go to AHEAD"
MOV A, M	 : "Yes, get 2nd number in the accumulator"
STA 2503 H	 : "Store larger number in 2503H"
HLT	         : "Stop"

找到两个数字中较小的一个

示例

2501H = 84 H
2502H = 99 H
Result = 84 H(2503H)

程序

第一个数字 84H 放置在内存位置 2501 H 中。

第二个数字 99H 放置在内存位置 2502H 中。

结果存储在内存位置 2503 H 中。

LXI H, 2501H : "Address of first number in H-L pair"
MOV A, M	 : "1stt number in accumulator"
INX H	     : "Address of 2nd number in H-L pair"
CMP M	     : "compare 2nd number with 1st number"
JC AHEAD	 : "Yes, smaller number is in accumulator. Go to AHEAD"
MOV A, M	 : "No, get 2nd number in the accumulator"
STA 2503 H	 : "Store smaller number in 2503H"
HLT	         : "Stop"

计算一系列偶数的总和

示例

2500 H = 4H
2501 H = 20H
2502 H = 15H
2503 H = 13H
2504 H = 22H
Result = 2505 H = 20+22= 42H

程序

这些数字放置在内存位置 2501 到 2504H 中。

总和要存储在内存位置 2450H 中。

由于该系列中有 4 个数字,因此 count = 04

总和的初始值设为 00。该系列中的偶数逐个取出并添加到总和中。

计算一系列奇数的总和

示例

2500 H = 4H
2501 H = 9AH
2502 H = 52H
2503 H = 89H
2504 H = 3FH
Result = 2505 H = 89H + 3FH= C8H

程序

这些数字放置在内存位置 2501 到 2504H 中。

总和要存储在内存位置 2450H 中。

由于该系列中有 4 个数字,因此 count = 04

总和的初始值设为 00。该系列中的奇数逐个取出并添加到总和中。

求给定数字的平方

程序

使用查找表技术找到 07(十进制)的平方。

数字 07 D 在内存中。

结果要存储在内存位置 2501H 中。

平方的表从 2600 到 2609 H 存储。

从给定的数字中分离偶数

程序

让我们看一下程序,从给定的 50 个数字列表中分离偶数,并将它们存储在从 2600H 开始的另一个位置。

50 个数字列表的起始位置是 2500H。


下一个主题微处理器应用