问题–在8086微处理器中编写一个程序,以将两个8位数字相乘,其中数字存储在偏移500中,然后将结果存储到偏移600中。
示例–输入和输出以十六进制表示。
算法 –
- 将数据从偏移500加载到寄存器AL(第一个数字)
- 将数据从偏移量501加载到寄存器BL(第二个数字)
- 乘以它们(AX = AL * BL)
- 将结果(寄存器AX的内容)存储到偏移量600
- 停止
程序 –
MEMORY ADDRESS | MNEMONICS | COMMENT |
---|---|---|
400 | MOV SI, 500 | SI=500 |
403 | MOV DI, 600 | DI=600 |
406 | MOV AL, [SI] | AL<-[SI] |
408 | INC SI | SI=SI+1 |
409 | MOV BL, [SI] | BL<-[SI] |
40B | MUL BL | AX=AL*BL |
40D | MOV [DI], AX | AX->[DI] |
40F | HLT | END |
解释 –
- MOV SI,500将500设置为SI
- MOV DI,600将600设置为DI
- MOV AL,[SI]将偏移量SI的内容加载到寄存器AL
- INC SI将SI的值增加1
- MOV BL,[SI]将偏移量SI的内容加载到寄存器BL
- MUL BL将寄存器AL和BL的内容相乘
- MOV [DI],AX将结果(寄存器AX的内容)存储到偏移量DI
- HLT结束。