问题–编写一个程序,添加两个16位数字,起始地址为2000 ,数字分别为3000和3002内存地址,并将结果存储到3004和3006内存地址中。
例子 –
算法 –
- 将0000H载入CX寄存器(用于进位)
- 从内存3000将数据加载到AX(累加器)
- 从存储器3002将数据加载到BX寄存器中
- 使用累加器AX添加BX
- 如果没有进位则跳
- CX递增1
- 将数据从AX(累加器)移至内存3004
- 将数据从CX寄存器移至内存3006
- 停止
程序 –
Memory | Mnemonics | Operands | Comment |
---|---|---|---|
2000 | MOV | CX, 0000 | [CX] <- 0000 |
2003 | MOV | AX, [3000] | [AX] <- [3000] |
2007 | MOV | BX, [3002] | [BX] <- [3002] |
200B | ADD | AX, BX | [AX] <- [AX] + [BX] |
200D | JNC | 2010 | Jump if no carry |
200F | INC | CX | [CX] <- [CX] + 1 |
2010 | MOV | [3004], AX | [3004] <- [AX] |
2014 | MOV | [3006], CX | [3006] <- [CX] |
2018 | HLT | Stop |
解释 –
- MOV用于加载和存储数据。
- ADD用于将两个数字相加,其中一个数字是否在累加器中。
- JNC是2位命令,用于检查进位是否由累加器产生。
- INC用于将寄存器加1。
- HLT用于停止程序。
- AX是一个累加器,用于加载和存储数据。
- BX,CX是通用寄存器,其中BX用于存储第二个数字,CX用于存储进位。