8086程序,用于在给定数组中查找最小值

问题—— 编写一个程序,在8086微处理器汇编中找到给定数组中的最小值

null

例如——

图片[1]-8086程序,用于在给定数组中查找最小值-yiteyi-C++库

假设—— 输入数组的起始地址为0500,并将结果存储在地址0600

算法-

  1. 在SI中指定值500,在DI中指定值600
  2. 移动CL中[SI]的内容,并将SI增加1
  3. 将值00 H指定给CH
  4. 移动AL中[SI]的内容
  5. 将CX的值减少1
  6. 将SI的值增加1
  7. 在BL中移动[SI]的内容
  8. 比较BL和AL的值
  9. 如果设置了进位标志,则跳至步骤11
  10. 在AL中移动BL的内容
  11. 跳到步骤6,直到CX的值变为0,然后将CX减小1
  12. 在[DI]中移动AL的内容
  13. 停止节目

项目-

内存地址 助记符 评论
0400 MOV SI,500 SI
0403 莫夫迪,600 DI
0406 MOV-CL[SI] CL
0408 MOV CH,00 CH
040A 公司SI SI
040B MOV AL[SI] AL
040D 12月CX日 CX
040E 公司SI SI
040F MOV BL[SI] BL
0411 基本法 AL-BL
0413 JC 0417 如果进位为1,则跳转
0415 莫夫·艾尔,BL AL
0417 回路040E 如果CX不等于0,则跳转
0419 莫夫[DI],艾尔 [DI]
041B HLT 节目结束

解释——

  1. MOV SI,500将500分配给SI
  2. MOV DI,600将600分配给DI
  3. MOV CL,[SI]将[SI]的内容移动到CL寄存器
  4. MOV CH,00将00分配给CH寄存器
  5. INC SI将SI值增加1
  6. MOV AL,[SI]将[SI]的内容移动到AL寄存器
  7. DEC CX将CX寄存器的内容减少1
  8. INC SI将SI值增加1
  9. MOV BL,[SI]将[SI]的内容移动到BL寄存器
  10. CMP AL,BL从AL中减去BL寄存器的值,并修改标志寄存器
  11. 如果设置了进位标志,JC 0417跳转到0417地址
  12. MOV AL,BL将BL寄存器的内容移动到AL寄存器
  13. 循环040E运行循环,直到CX不等于零,并将CX的值减少1
  14. MOV[DI],AL将AL的内容移动到[DI]
  15. HLT停止程序的执行
© 版权声明
THE END
喜欢就支持一下吧
点赞11 分享