这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 8051架构以及汇编指令的翻译

共1条 1/1 1 跳转至

8051架构以及汇编指令的翻译

助工
2014-11-13 19:36:18     打赏
SP 初始化 07H ,向上生长,空栈,也就是先送数据再移动 SP,可以设置在 00~7FH

89S52 的ROM 范围是 00H ~ 1FFFH 共 8K

SRAM 的分布
0~1F R0~R7 * 4BANK
20H ~ 2FH BIT ADDRESSING
30H ~ 7FH SRAM

P0 ~ P3 口,送 1 或者 0 是输出状态。送1的时候端口是高阻态可以读取数据。
EA 引脚决定使用内部还是外部ROM,一般是拉到VDD表示使用内部ROM
PSEN 外部存储器使能
ALE 锁存器使能

汇编指令的翻译
写汇编代码的时候编译器对这些代码进行翻译。

假设我们两条简单的指令JMP指令,看看到底怎么翻译的:

    CSEG    AT    00H
    LJMP 1204H
    AJMP 101H
    END

LOC OBJ LINE SOURCE
---- 1 CSEG AT 00H
0000 021204 2 LJMP 1204H
0003 2101 3 AJMP 101H
                       4 END


首先看 LJMP 的二进制码 00000010 A15-A8 A7-A0 其中 0X02是指令码,剩下的 16BIT 是地址。
可以看出 LJMP 需要3个字节来保存所有信息。LJMP 1204H 的地址是 1204H,那么这条指令很自然
的翻译为 021204 查看 LIST 文件可以确认这点。

再看 AJMP 指令 AJMP 101H
二进制码是 A10 A9 A8 00001 A7 A6 A5 A4 A3 A2 A1 A0 同样是换汤不换药,指令码是 00001
剩下的是地址 101H 了其中高三位是 001 ,低8位是 0000-0001 所以指令的合成
001(高三位) + 00001(指令码) + 0000-0001(低8位) 于是得到 2101 了,可以看出这里只需要 2字节。

其他代码都是这样出来的。

寻址方式带来的指令差异。所谓的寻址,就是寻找地址,简单点说,就是从什么地方能找到数据

04 1 INC A 可以访问 ACC
05 2 INC direct 可以直接访问SRAM为之直接寻址
06 1 INC @R0 可以通过 R0 R1 简介访问SRAM,为之间接寻址
07 1 INC @R1 
08 1 INC R0 可以访问 R0~R7 为之寄存器寻址
09 1 INC R1 
0A 1 INC R2 
0B 1 INC R3 
0C 1 INC R4 
0D 1 INC R5 
0E 1 INC R6 
0F 1 INC R7 

可以看出,虽然名字有点怪,但是道理确是很简单。

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]