微机原理五类常用程序_第1页
微机原理五类常用程序_第2页
微机原理五类常用程序_第3页
微机原理五类常用程序_第4页
微机原理五类常用程序_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

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

文档简介

1 五类常用程序 传输数据 求最大最小值 统计正负数 排序 加法程序 存储器清零或置 FF 1 1 将 1000H 1063H 中的各字节内容清 0 或置 FFH 1 2 传输数据块 将 1000H 1063H 中的字节内容传递到 4000H 4063H 2 找最大值最小值 从 2500H 2563H 中存放着数据 把其中的最大值找出来 地址存放在 3000H 中 3 统计负数正数 从 2100H 开始存放 100 个无符号数 统计有多少个正数 多少个负数 负数个数存入 2200H 4 1 求 1AH 02H 31H 14H 2FH 06H 数据 1AH 0FH 24H 4EH 18H 2DH 放在 3000H 3005H 处 4 2 求十进制计算 25 74 89 67 49 78 64 95 数据 25 74 89 67 放在 2400 2403 数据 49 78 64 95 放在 2500 2503 4 3 将 BLOCK 单元开始的 10 个单元数相加 结果存放入 BLOCK 单元 若相加过程中发 生溢出 停止运算 并在 DL 中设置溢出标志 FF 5 冒泡排序方法 5 1 字节型变量 VAR1 VAR2 和 VAR3 存放有 3 个无符号数 将其中的内容按从大到小重 新排列 解 经重新排列后 VAR1 的值最大 VAR3 的值最 小 由于变量中存放的数据为无 符号数 因此应该采用 JA JAE JB JBE 等指令 编程思路 通过在三个数中找出最大值 将它与 VAR1 单元进行交换 然后对剩余的两个 数进行比较 将较大值存放在 VAR2 中 汇编语言程序如下 5 2 存放在 2040H 2045H 中的字节数据由大到小排列 2 1 1 将 1000H 1063H 中的各字节内容清 0 或置 FFH MOV SI 1000H MOV CX 0064H XOR AL AL L1 MOV SI AL INC SI DEC CX JNZ L1 HLT 1 2 传输数据块 将 1000H 1063H 中的字节数据内容传递到 4000H 4063H MOV SI 1000H MOV DI 4000H MOV CX 0064H L1 MOV AL SI MOV DI AL INC SI INC DI DEC CX JNZ L1 HLT 2 从 2100H 开始存放 100 个无符号数 求最大值并存入单元 2200H MOV SI 2100H MOV CX 0064H XOR AL AL L1 CMP AL SI JNC L2 MOV AL SI L2 INC SI DEC CX JNZ L1 MOV 2200 AL HLT 如果求最小值 XOR AL AL 改为 MOV AL 0FFH JNC L2 改为 JC L2 或者 MOV SI AL INC SI 相应 MOV CX 0063H 3 3 统计负数正数 从 2100H 开始存放 100 个无符号数 统计有多少个正数 多少个负数 负数个数存入 2200H MOV SI 2100H MOV CX 0064H XOR DL DL L1 MOV AL SI AND AL AL AND AL FFH TEST AL 80H JNS L2 INC DL L2 INC SI LOOP L1 MOV 2200 DL HLT LOOP L1 可以改为 DEC CX JNZ L1 求最大最小值 JNC JC 求正负数用 JS JNS 4 1 1AH 0FH 24H 4EH 18H 2DH 0E 计算 数据 1AH 0FH 24H 4EH 18H 2DH 放在 3000H 3005H 处 参考程序 参考程序 MOV SI 3000H MOV CX 0006H XOR AL AL AA ADD AL SI INC SI DEC CX JNZ AA MOV 3040H AL HLT 4 4 2 求十进制计算 25 74 89 67 49 78 64 95 数据 25 74 89 67 放在 2400 2403 数据 49 78 64 95 放在 2500 2503 MOV SI 2400H MOV DI 2500H MOV BX 2600H MOV CX 0004H XOR AL AL AA MOV AL SI ADC AL DI DAA MOV BX AL INC SI INC DI INC BX LOOP AA HLT 5 冒泡排序方法 5 1 字节型变量 VAR1 VAR2 和 VAR3 存放有 3 个无符号数 将其中的内容按从大到小重 新排列 解 经重新排列后 VAR1 的值最大 VAR3 的值最 小 由于变量中存放的数据为 无符号数 因此应该采用 JA JAE JB JBE 等指令 编程思路 通过在三个数中找出最大值 将它与 VAR1 单元进行交换 然后对剩余的两个 数进行比较 将较大值存放在 VAR2 中 汇编语言程序如下 STACK SEGMENT STACK STACK DW 100H DUP TOP LABEL WORD STACK ENDS DATA SEGMENT VAR1DB 46H 先假设一组值 以便检验程序设计 的正确性 VAR2DB 15H VAR3DB 0A2H DATA ENDS CODE SEGMENT ASSUME CS CODE DS DATA ES DATA SS STACK START MOV AX DATA MOV DS AX MOV ES AX MOV AX STACK 5 MOV SS AX LEA SP TOP MOV AL VAR1 用户编写的程序 CMP AL VAR2 JAE NO CHG1 XCHG AL VAR2 NO CHG1 CMP AL VAR3 JAE NO CHG2 XCHG AL VAR3 NO CHG2 MOV VAR1 AL 最大值保存到 VAR1 MOV AL VAR2 CMP AL VAR3 JAE NO CHG3 XCHG AL VAR3 MOV VAR2 AL 次大值保存到 VAR2 NO CHG3 MOV AH 4CH 返回 DOS 操作系统 INT 21H CODE ENDS END START 程序执行后 程序执行后 VAR1 0A2H VAR2 46H VAR3 15H 说明程序设计正确 一般来说 在程序结束处 应该使之返回到说明程序设计正确 一般来说 在程序结束处 应该使之返回到 DOS 状态 以便进行其状态 以便进行其 它操作 它操作 当要排序的数据为有符号数时 只需要将程序中相应的当要排序的数据为有符号数时 只需要将程序中相应的 JAE 指令改成指令改成 JGE 指令 指令 存放在 2040H 2045H 中的字节数据由大到小排列 AA MOV DL

温馨提示

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

评论

0/150

提交评论