普林斯顿结构,它采用了不在程序与数据的存储上进行逻辑区分的设计思想,这种设计思想在通用计算机和通用微型计算机中被广泛使用。 mcs-51单片机 就是基于这种结构 MCS-51汇编语言程序的一般格式与8086不同,没有代码段、数据段等区分,统一编址。程序由指令行或注释行组成,指令行每行只能写一条指令。指令前可用“标号:”表示指令地址,以便在指令中引用;标号是符号名,以字母开头。注释行应以“;”号开头;指令后也可用“;”号分隔,附加注释。程序由伪指令ORG XXXXH 定位,ORG中的16位地址就是将来写入程序存储器的绝对地址。程序中的ORG应按地址从小到大排列。由ORG定位的程序段可以不连续,汇编程序将会在段间的空地址上填00H,即NOP。因此,每个ORG段的最后一条指令一般应是转移指令。数据由伪指令DB(字节)或DW(双字节)说明。数值应以数码0-9开头;尾缀说明:B-二进制,D-十进制,H-十六进制。十进制D可缺省。也就是说你可以想象你的数据空间是从0000-FFFF因为你在编程时你只能操纵这个区,而程序性指令如JUMP永远不会跳到数据区的所以一个简单的初始化可以这样来做MOV R0,#00HMOV A,#00HMOV R1,#FFFFHloop:MOV@R0,AINC R0DANZ R1,loop将0000-FFFF全置零了如果用C来写可以这样吧memset(0000,0000,FFFF) /*add,int val,int count*/如果memset函数可以使用的话.我总觉的void pokeb(int segment,int offset,int value) 将字节value写到segment:offset处这个涵数无法使用。因为mcs-51没段概念。
|