先决条件—— 8086程序减去两个8位BCD数 问题—— 在8086微处理器中编写一个程序,求出两个16位BCD数的减法,其中数字从起始偏移量500存储,并将结果存储到偏移量600。
null
例如——
算法-
- 将数据从偏移量500加载到寄存器AL
- 将数据从偏移量502加载到寄存器BL
- 减去这两个数字(寄存器AL和寄存器BL的内容)
- 应用DAS指令(十进制调整)
- 将结果(寄存器AL的内容)存储到偏移量600
- 将数据从偏移量501加载到寄存器AL
- 将数据从偏移量503加载到寄存器BL
- 用借来的钱减去这两个数字。(登记册AL和登记册BL的内容)
- 应用DAS指令(十进制调整)
- 将结果(寄存器AL的内容)存储到偏移量601
- 将寄存器AL设置为00
- 通过进位将寄存器AL的内容添加到其自身
- 将结果(寄存器AL的内容)存储到偏移量602
- 住手
项目-
内存地址 | 记忆法 | 议论 |
---|---|---|
400 | MOV AL[500] | AL |
404 | MOV BL[502] | BL |
408 | 苏比尔 | AL |
40A | 达斯 | 十进制调整 |
40B | MOV[600],AL | AL->[600] |
40F | MOV AL[501] | AL |
413 | MOV BL[503] | BL |
417 | SBB AL,BL | AL |
419 | 达斯 | 十进制调整 |
41A | MOV[601],AL | AL->[601] |
41E | MOV AL,00 | AL |
420 | 艾尔,艾尔 | AL |
422 | MOV[602],AL | A->[602] |
426 | HLT | 终止 |
解释——
- MOV AL,[500]: 将数据从偏移量500加载到寄存器AL
- MOV BL,[502]: 将数据从偏移量502加载到寄存器BL
- 分界区,基本法: 减去寄存器AL和BL的内容
- 达斯: 十进制调整
- MOV[600],AL: 将数据从寄存器AL存储到偏移量600
- MOV AL,[501]: 将数据从偏移量501加载到寄存器AL
- MOV BL[503]: 将数据从偏移量503加载到寄存器BL
- SBB AL,BL: 用借出法减去寄存器AL和BL的内容
- 达斯: 十进制调整
- MOV[601],AL: 将数据从寄存器AL存储到偏移量601
- MOV AL,00: 将寄存器AL的值设置为00
- 艾尔,艾尔: 通过进位将寄存器AL的内容添加到AL
- MOV[601],AL: 将数据从寄存器AL存储到偏移量601
- HLT: 终止
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END