预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共96页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

会计学§4.0绪§4.0绪§4.1汇编语言(huìbiānyǔyán)源程序格式§4.1.1编程的步骤(bùzhòu)根据问题要实现的目标(mùbiāo):首先设计硬件电路。然后再根据具体的硬件环境进行程序设计。一、分析(fēnxī)问题在编程以前,先要对几种不同(bùtónɡ)的算法进行分析、比较,找出最适宜的算法三、画程序(chéngxù)流程图四、编写程序汇编语言编写的源程序行(一条语句)包括(bāokuò)四个部分,也叫4个字段。这四个字段是:[标号:]<操作码>[操作数][;注释]每个字段之间要用分隔符分隔,而每个字段内部不能使用分隔符。可以用作分隔符的符号有:空格“”冒号“:”逗号“,”分号“;”例如(lìrú),LOOPl:MOVA,#00H;立即数00H送A标号是用户定义的符号地址。一条指令的标号是该条指令的符号名字(míngzi),标号的值是汇编这条指令时指令的地址。标号由以英文字母开始的1~8个字母或数字串组成,以冒号":"结尾。标号可以由赋值伪指令赋值。如果(rúguǒ)标号没有赋值,汇编程序就把存放该指令目标码第一字节的存储单元的地址赋给该标号,所以,标号又叫指令标号。注意:系统中保留使用的关键字不能用作标号。对于一条汇编语言指令(zhǐlìng),这个字段是必不可少的,它用一组字母符号表示指令(zhǐlìng)的操作码。89C51中,它由指令(zhǐlìng)系统助记符组成。汇编语言指令可能要求或不要求操作数。若有两个操作数,操作数之间应用逗号分开操作数字段的内容是复杂多样的,它可能包括(bāokuò)下列诸项:①工作寄存器名②特殊功能寄存器名③标号④常数⑤$⑥表达式⑶操作数:①工作(gōngzuò)寄存器名⑶操作数:②特殊(tèshū)功能寄存器名可以在操作数字段中引用的标号名包括(bāokuò):赋值标号由汇编命令EQU等赋值的标号可以作为操作数。指令标号指令标号虽未给赋值,但这条指令的第一字节地址就是这个标号的值,在以后指令操作数字段中可以引用。LOOP:MOVA,R2……LJMPLOOP汇编语言指令允许(yǔnxǔ)以各种数制表示常数,常数可以写成二进制、十进制或十六进制。常数总是要以一个数字开头若十六进制的第一个数为A~F字符,前面要加零,数字后要直接跟一个表明数制的字母,B二进制,H十六进制。MOVA,#00000111BMOVA,#07HMOVA,#07MOVA,#0FDH“$”,用来表示(biǎoshì)程序计数器的当前值。这个符号最常出现在转移指令中,JNBTF0,$表示(biǎoshì)若TF0为零仍执行该指令,否则往下执行,它等效于$:JNBTF0,$汇编程序允许把表达式作为操作数使用。在汇编时,计算(jìsuàn)出表达式的值;并把该值填入目标码中。例如,MOVA,SUM+l⑷注释注释字段不是汇编语言的功能部分,只是用于增加程序的可读性。注释是汇编语言程序编写中的重要(zhòngyào)组成部分以“;”隔开。例:LOOP:MOVA,#00H;立即(lìjí)数00H→A伪指令不是真正的指令,无对应的机器码,在汇编时不产生目标程序,只是用来(yònɡlái)对汇编过程进行某种控制。§4.1.3伪指令ORG汇编起始(qǐshǐ)命令ORG汇编起始(qǐshǐ)命令END汇编(huìbiān)结束指令EQU赋值命令(mìnglìng)EQU赋值命令(mìnglìng)EQU赋值命令(mìnglìng)DATA数据(shùjù)地址赋值命令DATA数据地址(dìzhǐ)赋值命令DB定义字节(zìjié)命令DB定义(dìngyì)字节命令DW定义(dìngyì)字命令DW定义(dìngyì)字命令DS定义(dìngyì)存储空间命令DS定义(dìngyì)存储空间命令BIT位地址(dìzhǐ)符号命令BIT位地址(dìzhǐ)符号命令§4.1.4编程的方法(fāngfǎ)和技巧一、模块化的程序设计(chénɡxùshèjì)方法1、程序功能(gōngnéng)模块化的优点2、划分模块(mókuài)的原则二、编程技巧(jìqiǎo)二、编程技巧(jìqiǎo)§4.1.5汇编语言程序(chéngxù)的基本结构语句3一、顺序程序例1双字节加法(jiāfǎ)。被加数地址:addr2,addr1.加数地址:addr4,addr3.和在:addr2,addr1中.例2、双字节求补子程序CPLD算法:正数(zhèngshù)不变,负数取反+1解:入口参数:(R7R6)=待求补码的16位负数出口参数:(R7R6)=求补后的16位数例3拆字。将片内RAM20H单元的内容拆成两段,每段四位。并将它们分别存