课堂汇编程序_第1页
课堂汇编程序_第2页
课堂汇编程序_第3页
课堂汇编程序_第4页
课堂汇编程序_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、一_内存20H7FH清零;*;函数功能:20H7FH 单元数据清0;*ORG 000HMOV A,#01H ;需要清的数值MOV R1,#20H ;清数据的首地址20HMOV R2,#60H ;清数据所需要的次数LOOP:MOV R1,A ;把所需要清的数据,间接寻址INC R1 ;首地址累加DJNZ R2,LOOP ;末地址7FH 循环-1 不为0 则转移循环60H次LJMP $八_从#1000H起统计大等小#80H个数放R3R4R5;*;函数功能:从外部存储单元(1000H开始,外部输入数据; 统计大于#80H的数据个数存放在R3; 统计等于#80H的数据个数存放在R4; 统计小于#80H

2、的数据个数存放在R5;*ORG 000HMOV DPTR,#1000H ;外部内存地址XDATAMOV R3,#00H ;存放>#80H 的个数MOV R4,#00H ;存放=#80H 的个数MOV R5,#00H ;存放<#80H 的个数;* 读取外部存储数据1000H起*LOOP1:MOVX A,DPTR ;MOVX 外部数据存储由外部输入JZ OVER ;判断累加器A中的数据是否为0,为0 则转移LOOP3:CJNE A,#80H,LOOP4 ;累加器A中的数据与#80H相比不相等则转移INC R4 ;如果数据=#80H 则R4+1LJMP LOOP2 ;读取下一个数据LOO

3、P4:JC LOOP5 ;JC 进位标志位为1则转移INC R3 ;cy=0 A > #80H R3+1LJMP LOOP2LOOP5:INC R5 ;读取下一个数据;cy=1 A < #80H R5+1LOOP2:INC DPTR ;读取下一个数据LJMP LOOP1OVER:LJMP $;*;函数功能:外部输入数据30H 3FH; 从大到小排序;*LOOP:ORG 000HCLR 00H ;换位标志清零MOV R0,#30H ;排序的起始位置MOV R3,#0FH ;排序的次数(N-1次LOOP1:MOV A,R0 ;取第一个数INC R0 ;地址+1MOV 21H,R0 ;取

4、第二个数据CJNE A,21H,LOOP2 ;比较两个数的大小*注意*判断的大小的时候大于和等于Cy位都为0LOOP2:JNC LOOP3 ;进位标志位为0则转移也就是比较大小R0<21H则交换R021H取下一组数据MOV R0,A ;如果cy=0 R0<21H 开始交换位置DEC R0 ;因为是A B B C 比较R0已经+1 所以现在要-1MOV R0,21HSETB 00H ;交换标志位清1INC R0 ;开始取下组数据比较LOOP3:DJNZ R3,LOOP1 ;判断是否循环(N-1次JB 00H,LOOP ;判断交换标志位是否为1 为1则再次循环判断;*;函数功能:外部输

5、入数据30H 3FH; 从小到大排序;*LOOP:ORG 000HCLR 00H ;换位标志清零MOV R0,#30H ;排序的起始位置MOV R3,#04H ;排序的次数(N-1次LOOP1:MOV A,R0 ;取第一个数INC R0 ;地址+1MOV 21H,R0 ;取第二个数CJNE A,21H,LOOP2 ;判断两个数据的大小不相等则转移判断cy位LCALL LOOP3 ;若相等则无视直接取下个数据做比较LOOP2:JC LOOP4 ;判断cy位等1则转移也就A < 21H 数据,无需换位,直接取下一个数作比较MOV R0,A ;cy=0 说明A>21H数据所以要开始交换数

6、据DEC R0 ;两数据交换需要地址-1 否则没法交换MOV R0,21H ;SETB 00H ;交换标志位置1LOOP3:INC R0 ;数据地址+1LOOP4:DJNZ R3,LOOP1 ;判断(N-1次是否比较完JB 00H,LOOP ;判断交换标志位是否为1十四_BCD转BIN;*; 函数功能:BCD 转化BIN; BCD放到30H 31H 转化的BIN 放到32H 33H;*;30H=1200(BCD31H=34(BCDORG 000HMOV 32H,#00H ;存放BIN高8位MOV 33H,#00H ;存放BIN低8位MOV A,30H ;取30H里的数据ANL A,#0F0H

7、;与逻辑SWAP A ;A里的数据高低字节交换,剩下高四位JZ LOOP ;累加器(A也就是千位为0 则转移MOV R7,A ;取到的千位放到R7MOV B,#0E8H ;03E8代表BCD码的1000 0E8=232MUL AB ;千位*232 低八位放到A里高八位放到B里(超过256的情况MOV 33H,A ;低八位MOV 32H,B ;高八位MOV A,R7 ;千位的高四位MOV B,#03H ;03E8才代表1000双字节需要拆开算MUL AB ;A*BADD A,32H ;把*0E8得到的数+*03得到的数加一起才算完整的千位MOV 32H,ALOOP:MOV A,30H ; ANL

8、 A,#0FH ;取30H的低四位MOV B,#64H ;64H=100MUL AB ;A*BADD A,33H ;33H加到A上MOV 33H,AMOV A,B ;把乘积的高四位给AADDC A,32H ;带进位32H加到A上MOV 32H,A ;A给32HMOV A,31H ;31H的(BCD低八位给ASWAP A ; ANL A,#0FH ;取低四位MOV B,#10 ;10MUL AB ;A*10MOV B,A ;把乘积的低四位给BMOV A,31H ;取31H数据给AANL A,#0FH ;取低四位ADD A,B ;把B里面的数据加给AADD A,33H ;33H加到A上(33H是个

9、位MOV 33H,A ;MOV A,32H ; 判断个位十位是否有进位所以判断一下ADDC A,#00H ;MOV 32H,A ;LJMP $十五_BIN 转 BCD.ASM ;* ;函数功能: BIN 转换 BCD 存放到 30H 31H ; (最大能表示 255 FF) ;* ORG 000H MOV A,R3 ;外部数据存入 ;64H=100 除数为 100 ;A/B 商放到 A 余数放到 B ;把百位的商放到 30H 里面 ;把 B 里面的余数给 A ;除数为 10 ;余数/10 商放到 A 中,余数放到 B 中 ;交换 A 的高 4 位和低 4 位 ;B 加到 A 上 ;最后把 A

10、里面的数据给 31H MOV B,#64H DIV AB MOV 30H,A MOV A,B MOV B,#10 DIV AB SWAP A ADD A,B MOV 31H,A LJMP $ 四_1+.+99 放到 R6R7 中(BCD) ;* ;函数功能: (1)从 20H 起开始赋值 1 2 3 · · · ·99 ; (2) 199 累加求和放到 R6 R7 中 R6=49 R7=50 ; ;日期:2016.09.22 ;* ORG 000H MOV MOV MOV LOOP: A,#01H ;20H 起需要赋值 0199 R1,#20H ;赋值的首地址 R2,#99 ;循环 99 次 在这里是个起始值 MOV R1,A ;间接寻址赋值 INC R1 ;地址 20H 起+1 ADD A,#01H ;累加赋值 DA A ;10 进制转换 DJNZ R2,LOOP ;* ;函数功能(2: 199 累加部分 ;* MOV R1,#20H MOV MOV MOV L: MOV A,R7 ADD A,R1 DA A MOV R7,A INC R1 ;低 8 位数据给 A ;间接寻址得到的值加给 A ;十进制转换 ;得到的十进制数放到低 8 位上 ;数据地址+1 R5,#99 ;循环累加 99 次 R6,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论