问题—— 编写一个程序,在8086微处理器汇编中找到给定数组中的最小值
null
例如——
假设—— 输入数组的起始地址为0500,并将结果存储在地址0600
算法-
- 在SI中指定值500,在DI中指定值600
- 移动CL中[SI]的内容,并将SI增加1
- 将值00 H指定给CH
- 移动AL中[SI]的内容
- 将CX的值减少1
- 将SI的值增加1
- 在BL中移动[SI]的内容
- 比较BL和AL的值
- 如果设置了进位标志,则跳至步骤11
- 在AL中移动BL的内容
- 跳到步骤6,直到CX的值变为0,然后将CX减小1
- 在[DI]中移动AL的内容
- 停止节目
项目-
内存地址 | 助记符 | 评论 |
---|---|---|
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 | 节目结束 |
解释——
- MOV SI,500将500分配给SI
- MOV DI,600将600分配给DI
- MOV CL,[SI]将[SI]的内容移动到CL寄存器
- MOV CH,00将00分配给CH寄存器
- INC SI将SI值增加1
- MOV AL,[SI]将[SI]的内容移动到AL寄存器
- DEC CX将CX寄存器的内容减少1
- INC SI将SI值增加1
- MOV BL,[SI]将[SI]的内容移动到BL寄存器
- CMP AL,BL从AL中减去BL寄存器的值,并修改标志寄存器
- 如果设置了进位标志,JC 0417跳转到0417地址
- MOV AL,BL将BL寄存器的内容移动到AL寄存器
- 循环040E运行循环,直到CX不等于零,并将CX的值减少1
- MOV[DI],AL将AL的内容移动到[DI]
- HLT停止程序的执行
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END