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

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

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

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

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

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

第三章(2)汇编语言程序设计 教学要求: 1.进一步熟悉指令系统,自己可以看懂书上的程序; 2.自己可以编写20行以内的程序,并在计算机上调试通过,考试编程必考3.1汇编语言程序设计中的数 3.2汇编语言编程基本规则 3.3汇编程序的伪指令 3.4汇编语言程序的结构 3.5几种常见程序 3.5.1简单程序 3.5.2分支程序设计 3.5.3循环程序设计 3.5.4散转程序设计 3.5.5查表程序设计 3.5.6子程序和参数传递 3.5.7关键字查找程序设计3.5.8数据极值查找程序设计 3.5.9数据排序程序设计 3.5.10码制转换程序设计3.1汇编语言程序设计中的数3.2汇编语言编程基本规则3.3汇编程序的伪指令1.ORGaddr16——汇编程序中一定要写!(ORIGINE) 规定编译后的机器代码存放的起始位置.可以多次使用ORG命令 2.END——ASM51程序中一定要写! 表示翻译到此结束,其后的任何内容不予理睬. 每段程序只能有一条END指令 3.$——“当前PC值”也叫位置计数器,代表正在执行的指令所在位置.如:HERE:SJMPHERE可写为:SJMP$ 4.符号名称EQU表达式(EQUATE) 将表达式的值赋予符号名称,程序中凡出现该符号名称就等同于该表达式.5.符号名称BIT位地址 将位地址的值赋予符号名称,程序中凡出现该符号名称就代表该位地址.如:AIBITP1.0 6.DB8位数据[或8位数据组](DefineByte) 将8位数据[或8位数据组]顺序存放在此后的存储单元中,占相应数量的存储空间. 7.DW双字节数据[或双字节数据组](DefineWord) 将双字节数据[或双字节数据组]顺序存放在此后的存储单元中,占据相应存储空间. 8.DATA数据地址赋值 命令格式:字符名称DATA表达式 功能:将数据地址或代码地址赋予规定的字符名称例3-1:(Keil演示OK)c:2000h ORG2000H TAB1:DB30H,8AH,7FH,73 DB'5','A','BCD'DW伪指令与DB的功能类似,所不同的是DB用于定义一个字节(8位二进制数),而DW则用于定义一个字(即两个字节,16位二进制数).在执行汇编程序时,机器会自动按高8位先存入,低8位后存入(记忆!)的格式排列,这和MCS-51指令中16位数据存放的方式一致. 例3-2:(Keil演示OK) ORG1500H TAB2:DW1234H,80H 解答:(1500H)=12H,(1501H)=34H,(1502H)=00H,(1503H)=80H. 预留存储空间伪指令DS(Storage)等值指令EQU(Equate) 指令格式:字符名称EQU数字或汇编符号 功能:使指令中的字符名称等价于给定的数字或汇编符号. 使用等值指令可给程序的编制、调试、修改带来方便,如果在程序中要多次使用到某一地址,由EQU指令将其赋值给一个字符名称,一旦需要对其进行变动,只要改变EQU命令后面的数字即可,而不需要对程序中涉及到该地址的所有指令逐句进行修改.但要注意,由EQU等值的字符名称必须先赋值后使用,且在同一个源程序中,同一个标号只能赋值一次. 例:PA8155EQU8001H 即给标号PA8155赋值为8001H. 例3-4:EQU和DATA的以用法(KEIL演示OK) ORG0000H A10EQU10H A20DATA20H MOVR0,A10 ;直接用A10,10H单元中的内容→R0 MOVR1,A10+1 ;A10+1,11H中的内容→R1 MOVR2,#A10 ;注意使用了#,#10H立即数→R2注意体会这些细微的用法 MOVR3,A20 MOVR4,A20+1 MOVR5,#A20 SJMP $ END3.4汇编语言程序的结构椭圆框:起止框,在程序的开始和结束时使用. 矩形框:处理框,表示要进行的各种操作. 菱形框:判断框,表示条件判断,以决定程序的流向. 指向线:流程线,表示程序执行的流向. 圆圈:连接符,表示不同页之间的流程连接. 各种几何图形符号如下图所示:例3-5:两个无符号双字节数相加.(KEIL演示) 设被加数存放于内部RAM的40H(高位字节),41H(低位字节),加数存放于50H(高位字节),51H(低位字节),和数存入40H和41H单元中. ORG0000H START:CLRC ;将Cy清零 MOVR0,#41H ;将被加数地址指针送R0 MOVR1,#51H ;将加数地址指针送R1 AD1:MOVA,@R0 ;被加数低字节的内容送入A ADDA,@R1 ;两个低字节相加 MOV@R0,A ;低字节的和存入被加数低字节中 DECR0 ;指向被加