




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、12022-3-42022-3-42程序设计语言机器语言汇编语言高级语言机器语言机器语言 由于构成计算机的电子器件特性所决定, 计算机只能识别二进制代码。 这种以二进制代码来描述指令功能的语言, 称之为机器语言, 用机器语言组成的程序, 称为目标程序。 计算机就是按照机器语言的指令来完成各种功能操作的, 它具有程序简捷、占用存储空间小、执行速度快、控制功能强等特点。汇编语言汇编语言 用来替代机器语言的进行程序设计的一种语言,由助记符、保留字和伪指令等组成。很容易让人们所识别、记忆和读写。 汇编语言编写出的程序是汇编语言源程序,可由“汇编程序”翻译成机器语言程序(即目标代码)。地址地址机器语言机
2、器语言汇编语言汇编语言形式形式二进制形式二进制形式十六进制形式十六进制形式2000H0111 0100 0000 0101B7405HMOV A , #05H2002H0010 0100 0000 1010B240AHADD A , #0AH2004H1000 0000 1111 1110B80FEHMOV 20H , A汇编程序容易让人们所识别、记忆和读写,但不能为机器直接识别执行001010010101010101010101机器语言程序(即目标代码,机器可以识别执行010101010101)010101010101高级语言高级语言 是面向过程和问题并能独立于机器的通用程序设计语言,是一种
3、接近人们自然语言和常用数学表达式的计算机语言。 高级语言编写的程序是不能被机器直接执行的,但可以被常驻在内存或磁盘上的解释程序或编译程序等编译成目标代码后才能被机器所执行。独立于机器,可移植性强结构化设计,程序清晰,但是占用存储空间大编译程序001010010101010101010101机器语言程序(即目标代码,机器可以识别执行010101010101)010101010101u指令性语句使CPU执行一个具体的操作。u伪指令不要求计算机做任何操作,也没有对应的机器码,不产生目标程序,不影响程序的执行,仅仅是能够帮助进行汇编的一些指令。4.1.2 汇编语言构成汇编语言构成指令性语句:111条指
4、令的助记符语句。指示性语句:伪指令语句。2022-3-411 2022-3-415 80H20H20HA80HR1 低256B即是不超过8位的数据 2000H30H30HDPTRA2005H05HA+。MOV AMOV A,RnRn;A (Rn)A (Rn)MOV AMOV A,directdirect;AA(directdirect)MOV AMOV A,RiRi ;AA((Ri(Ri)) )MOV AMOV A,#data#data;A #dataA #dataMOV RnMOV Rn,A A;Rn (A)Rn (A)MOV RnMOV Rn,directdirect;Rn Rn (dir
5、ectdirect)MOV RnMOV Rn,#data#data;Rn #dataRn #dataMOV directMOV direct,A A;directdirect (A)(A)MOV directMOV direct,RnRn;directdirect (Rn)(Rn)MOV directMOV direct,direct direct ;directdirect (directdirect)MOV directMOV direct,RiRi;directdirect ( ((RiRi)) )MOV directMOV direct,#data#data;directdirect
6、#data#data(A)(A)MOV RiMOV Ri,directdirect;(;(RiRi) (directdirect)MOV RiMOV Ri,#data#data;(;(RiRi) #data#dataMOV DPTRMOV DPTR,#data16 #data16 ;DPTR #data16DPTR #data16 MOVX AMOVX A,DPTRDPTR;A (A ((DPTRDPTR)) )MOVX DPTRMOVX DPTR,A A;(;(DPTRDPTR) (A)(A)MOVX AMOVX A,RiRi;A (A ((RiRi)) )MOVX RiMOVX Ri,A
7、A;(;(RiRi) (A)(A) (1 1)将)将R0R0的内容送的内容送R6R6中中程序为:程序为:MOV AMOV A,R0R0MOV R6MOV R6,A A(2 2)将片内)将片内RAM 30HRAM 30H单元的内容送片外单元的内容送片外60H60H单元中单元中程序为:程序为:MOV AMOV A,30H30HMOV R0MOV R0,#60H#60HMOVX R0MOVX R0,A A(3 3)将片外)将片外RAM 1000HRAM 1000H单元的内容送片内单元的内容送片内20H20H单元中单元中程序为:程序为:MOV DPTRMOV DPTR,#1000H#1000HMOV
8、AMOV A,DPTRDPTRMOV 20HMOV 20H,A A(4 4)将)将ROM 2000HROM 2000H单元的内容送片内单元的内容送片内RAMRAM的的30H30H单元中单元中程序为:程序为:MOV AMOV A,#0#0MOV DPTRMOV DPTR,#2000H#2000HMOVC AMOVC A,A+DPTRA+DPTRMOV 30HMOV 30H,A A XCH AXCH A,RnRn;A RnA RnXCH A XCH A ,directdirect;AdirectAdirectXCH AXCH A,RiRi ;AA(RiRi)XCHD AXCHD A,RiRi;A
9、A0 03 3(RiRi)0 03 3SWAP ASWAP A;A A0 03 3AA4 47 7 。 PUSH APUSH APUSH BPUSH B则出栈的顺序为:则出栈的顺序为:POP BPOP BPOP APOP AADD AADD A,RnRn;A (A) + (Rn)A (A) + (Rn)ADD AADD A,directdirect;A (A) +A (A) +(directdirect)ADD AADD A,RiRi;A (A) +A (A) +((Ri)(Ri))ADD AADD A,#data#data;A (A) + #dataA (A) + #dataADDC AAD
10、DC A,RnRn;A (A) + (Rn) + CA (A) + (Rn) + CADDC AADDC A,directdirect ;A (A) +A (A) +(directdirect)+ C+ CADDC AADDC A,RiRi;A (A) +A (A) +(RiRi)+ C+ CADDC AADDC A,#data#data;A (A) + #data + CA (A) + #data + CINC AINC A;A (A) + 1A (A) + 1INC RnINC Rn;Rn (Rn) + 1Rn (Rn) + 1INC directINC direct;directdire
11、ct (directdirect)+ 1+ 1INC RiINC Ri;(;(RiRi)( ((RiRi))+ 1)+ 1INC DPTRINC DPTR ;DPTR (DPTR) + 1DPTR (DPTR) + 1 MOV AMOV A,R2R2ADD AADD A,R4R4MOV R6MOV R6,A AMOV AMOV A,R1R1ADDC AADDC A,R3R3MOV R5MOV R5,A ASUBB ASUBB A,RnRn;A (A) (Rn) - CA (A) (Rn) - CSUBB ASUBB A,directdirect ;A (A) -A (A) -(directdi
12、rect)- C- CSUBB ASUBB A,RiRi;A (A) -A (A) -(RiRi)- C- CSUBB ASUBB A,#data#data;A (A) - #data CA (A) - #data CDEC ADEC A;A (A) - 1A (A) - 1DEC RnDEC Rn;Rn (Rn) - 1Rn (Rn) - 1DEC directDEC direct;direct direct (directdirect)- 1- 1DEC RiDEC Ri;(;(RiRi)(RiRi)- 1- 1 。在在 MOV AMOV A,R3R3ADD AADD A,R2R2DA A
13、DA AMOV R5MOV R5,A A ANL AANL A,Rn A(A) Rn A(A) ( (Rn)Rn)ANL AANL A,direct A (A) direct A (A) (directdirect)ANL AANL A,Ri A (A) Ri A (A) (RiRi)ANL AANL A,#data A (A) #data A (A) #data #dataANL directANL direct,A directA direct (directdirect) (A)(A)ANL directANL direct,#data direct#data direct(direct
14、direct) #data#dataORL AORL A,Rn A (A) Rn A (A) (Rn) (Rn)ORL AORL A,direct A (A) direct A (A) (directdirect)ORL AORL A,Ri A (A) Ri A (A) (RiRi)ORL AORL A,#data A (A) #data A (A) #data #dataORL directORL direct,A directA direct (directdirect) (A)(A)ORL directORL direct,#data direct#data direct(direct(
15、direct) #data#dataXRL AXRL A,Rn A (A) Rn A (A) (Rn) (Rn)XRL AXRL A,direct A (A) direct A (A) (directdirect)XRL AXRL A,Ri A (A) Ri A (A) (RiRi)XRL AXRL A,#data A (A) #data A (A) #data #dataXRL directXRL direct,A directA direct (directdirect) (A)(A)XRL directXRL direct,#data direct#data direct directd
16、irect) #data#data MOV AMOV A,R0R0CPL ACPL AMOV R0MOV R0,A A 【例例3-93-9】若累加器若累加器A A中的内容为中的内容为10001011B10001011B,CY=0CY=0,则执行,则执行RLC ARLC A指令后累加器指令后累加器A A中的内容为中的内容为0001011000010110,CY=1CY=1。 LJMP addr16LJMP addr16;PC addr16PC addr16 例例3-103-10 ORG 0000H ORG 0000H LJMP START LJMP START ORG 0030H ORG 003
17、0HSTART:LJMP LABSTART:LJMP LAB ORG 7000H ORG 7000H LAB: MOV A, R4 LAB: MOV A, R4 AJMP addr11 AJMP addr11;PC PC 10100 0 addr11 addr11 SJMP rel SJMP rel;PC (PC) + 2 + relPC (PC) + 2 + rel JMP A+DPTR JMP A+DPTR;PC (A) + (DPTR)PC (A) + (DPTR) JZ rel JZ rel ;若若A=0A=0,则,则PC (PC) + 2 + relPC (PC) + 2 + rel
18、,否则,否则,PC (PC) + 2PC (PC) + 2 JNZ rel JNZ rel ;若若A A 0 0,则,则PC (PC) + 2 + relPC (PC) + 2 + rel,否,否则,则,PC (PC) + 2 PC (PC) + 2 。;若;若A=dataA=data,则,则PC (PC) + 3PC (PC) + 3,不转移,继续执行。若,不转移,继续执行。若AdataAdata,则,则C=0C=0,PC (PC) + PC (PC) + 3 + rel3 + rel,转移。若,转移。若AdataAdatadata,则,则C=0C=0,PC (PC) + 3 + relPC
19、 (PC) + 3 + rel,转移。若(,转移。若(RnRn)datadata(Ri)data,则,则C=0C=0,PC (PC) + 3 + relPC (PC) + 3 + rel,转移。若,转移。若(Ri)data(Ri)directAdirect,则,则C=0C=0,PC PC (PC) + 3 + rel(PC) + 3 + rel,转移。,转移。若若AdirectAR1R0R1转转BIG1MOV A, R1MOV A, R1MOV R0, AMOV R0, ABIG1:MOV DPTR, #8766HBIG1:MOV DPTR, #8766H MOVX A, DPTR MOVX
20、A, DPTR MOV R2, A MOV R2, A CLR C CLR C SUBB A, R0 SUBB A, R0 JC BIG2 ;R0R2 JC BIG2 ;R0R2转转BIG2 MOV A, R2 MOV A, R2 SJMP LABLAST SJMP LABLASTBIG2:MOV A, R0BIG2:MOV A, R0LABLAST:SJMP $LABLAST:SJMP $ END END例例3-283-28:寄存器:寄存器A A中存放了一个成绩值(中存放了一个成绩值(0A1000A100), ,编写一程序,判定该成绩所属的级别,放入寄存器编写一程序,判定该成绩所属的级别,放
21、入寄存器B B中。判中。判定标准是:定标准是:1 1级(级(100A90100A90)、)、2 2级(级(89A8089A80)、)、3 3级级(79A7079A70)、)、4 4级(级(69A6069A60)、)、5 5级(级(A59A59)。)。解:按照题意解:按照题意, ,该程序的流程图如下:该程序的流程图如下:ORGORG0000H0000H MOV R0, A ;MOV R0, A ;将将A A寄存器保存到寄存器保存到R0R0中中CLR C CLR C SUB A, #90 SUB A, #90 JNC LONEGREE ;JNC LONEGREE ;如果大于等于如果大于等于9090
22、,则跳转到,则跳转到 LONEGREE LONEGREEMOVX A, DPTRMOVX A, DPTRMOV A, R0MOV A, R0CLR CCLR CSUBB A, #80SUBB A, #80JNC LTWOGREE ;JNC LTWOGREE ;如果大于等于如果大于等于8080,则跳转到,则跳转到LTWOGREELTWOGREEMOV A, R0MOV A, R0CLR CCLR CSUBB A, #70SUBB A, #70JNC LTHREEGREE ;JNC LTHREEGREE ;如果大于等于如果大于等于7070,则跳转到,则跳转到THREEGREETHREEGREEMO
23、V A, R0MOV A, R0CLR CCLR CSUBB A, #60SUBB A, #60JNC LFOURGREE ;JNC LFOURGREE ;如果大于等于如果大于等于6060,则跳转到,则跳转到LFOURGREELFOURGREEMOV B, #5 ;MOV B, #5 ;否则就是第五等级否则就是第五等级LEND:SJMP $LEND:SJMP $LONEGREE: MOV B, #1LONEGREE: MOV B, #1SJMP LENDSJMP LENDLTWOGREE:MOV B, #2LTWOGREE:MOV B, #2SJMP LENDSJMP LENDLTHREEGR
24、EE:MOV B, #3LTHREEGREE:MOV B, #3SJMP LENDSJMP LENDLFOURGREE:MOV B, #4LFOURGREE:MOV B, #4SJMP LENDSJMP LENDENDEND从以上的程序可以看出,如果从以上的程序可以看出,如果A A寄存器的成绩值小于寄存器的成绩值小于6060,那么要做四个减法和条件判断才能最后得到所需要的等级值那么要做四个减法和条件判断才能最后得到所需要的等级值,所以这种多分支的程序结构的效率是比较低的。为了提高,所以这种多分支的程序结构的效率是比较低的。为了提高多分支程序的效率,往往采用地址表查询等方式来实现,这多分支程序的
25、效率,往往采用地址表查询等方式来实现,这将在后面进行分析。将在后面进行分析。循环是为了重复执行一个程序段。在循环是为了重复执行一个程序段。在5151指令系统的汇编指令系统的汇编语言中,语言中,循环次数固定的循环常常采用循环次数固定的循环常常采用DJNZDJNZ指令来实现。指令来实现。在在循环初始化时,将循环次数放置于某个通用寄存器中或某个循环初始化时,将循环次数放置于某个通用寄存器中或某个内部内部RAMRAM单元中;在循环结束处放置一条单元中;在循环结束处放置一条DJNZDJNZ,可同时完成对,可同时完成对循环计数单元的减循环计数单元的减1 1和条件跳转功能(如果循环计数单元不为和条件跳转功能
26、(如果循环计数单元不为0 0,则跳转到循环程序段的起始处)。,则跳转到循环程序段的起始处)。对于循环次数依赖于循环体中执行结果的循环程序,则对于循环次数依赖于循环体中执行结果的循环程序,则需要其他类型的有条件跳转指令。需要其他类型的有条件跳转指令。 程序如下:程序如下:ORG 0000HORG 0000HMOV R0, #0MOV R0, #0MOV R1, #100MOV R1, #100MOV DPTR, #2000HMOV DPTR, #2000HLOOP:LOOP:MOVX A, DPTRMOVX A, DPTRINC DPTRINC DPTRJNB ACC.7, NEXT ;JNB
27、ACC.7, NEXT ;如果如果A A最高位为最高位为0 0,则,则 ; ;大于等于大于等于0 0,不计入,不计入INC R0INC R0NEXT:DJNZ R1, LOOP ;NEXT:DJNZ R1, LOOP ;将将R1R1减减1 1,如果大于,如果大于0 0表明循环继续表明循环继续 SJMP $ SJMP $ END END ORG 0000HORG 0000HMOV R0, #-1 ;MOV R0, #-1 ;MOV DPTR, #3000HMOV DPTR, #3000HL00P:L00P:MOVX A, DPTR ;MOVX A, DPTR ;将当前字符的将当前字符的ASCII
28、ASCII码送入码送入A A寄存器寄存器INC DPTRINC DPTRINC R0 INC R0 CJNE A, #0, LOOP ;CJNE A, #0, LOOP ;如果当前字符的如果当前字符的ASCIIASCII码不为码不为0 0,循,循环继续环继续LEND:SJMP $LEND:SJMP $END END ORG 00HORG 00HMOV DPTR, #TAB1 ;MOV DPTR, #TAB1 ;将表的基地址存放在将表的基地址存放在DPTRDPTR寄存器中寄存器中MOV A, R2 ;MOV A, R2 ;将电压值放入将电压值放入A A寄存器中寄存器中CLR C ;CLR C ;
29、清除清除CYCY标志位标志位RLC A ;RLC A ;将将A A乘以乘以2 2JNC LNOCY ;JNC LNOCY ;如果没有进位则跳过进位处理如果没有进位则跳过进位处理 INC INC DPH ;DPH ;将将DPHDPH加加1 1,也就是将,也就是将DPTRDPTR加加256256, ; ;处理了进位处理了进位LNOCY:MOV R4, A ;MOV R4, A ;保存索引值保存索引值A A到到R4R4寄存器寄存器MOVC A, A+DPTR ;MOVC A, A+DPTR ;查表得到温度值的高字节查表得到温度值的高字节MOV R2, A ;MOV R2, A ;将温度值的高字节置于将温度值的高字节置于R2R2寄存器寄存器MOV A, R4 ;MOV A, R4 ;恢复索引值恢复索引值A AINC A ;INC A ;索引值索引值
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 离婚协议中子女探望权及安全保障补充协议
- 生态度假村地产返租合作经营合同
- 影视拍摄场地消毒防疫执行合同
- 高端艺术考级项目独家授权经营管理合同
- 电影特效替身演员薪资结算规范
- 《电竞主题咖啡厅IP打造与运营协议》
- 婚姻忠诚协议附财产分割条件及执行协议
- 虚拟现实主题公园项目投资评估合同
- 有机农业种植大棚租赁与农产品加工合作协议
- 临床医学影像设备质保服务条款补充协议
- 水域景观课件用
- 村集体小二型水库承包协议书
- 人人学点营销学(请分别进入班级观看视频不要在默认班级观看观看无效)学习通超星期末考试答案章节答案2024年
- 一例乳癌个案护理
- DBJ04∕T 290-2012 袖阀管注浆加固地基技术规程
- 第七章第四节创新实验葡萄糖银镜反应实验的改进设计课件高一下学期化学人教版
- 2024-2030年中国冻干猫粮行业供需现状及未来投资效益盈利性研究报告
- 民宿合同转让协议书
- 五年级下学期科学立体小菜园课件
- 《临床药物治疗学》考试复习题库宝典(含答案)
- 手册的介绍课件讲解
评论
0/150
提交评论