📜  8086程序生成n个数字的GP系列

📅  最后修改于: 2021-06-28 14:45:04             🧑  作者: Mango

问题–在8086微处理器中编写程序以生成n个数字的GP(几何级数)系列(数字只能为8位),其中大小“ n”存储在偏移量500处,而第一个数字(a)存储在偏移501并存储公共比率存储在偏移502中。将序列存储到偏移600中。

例子 –

算法 –

  1. 将500存储到SI中,将600存储到DI中将数据从偏移500加载到寄存器CL中,并将寄存器CH设置为00(用于计数)。
  2. 将SI的值增加1。
  3. 从下一个偏移量(即501)加载第一个数字(值)到寄存器AL。
  4. 将寄存器AL的值存储到存储器偏移量DI中。
  5. 将DI增加1。
  6. 将CL减1。
  7. 从下一个偏移量(即502)加载第二个数字(公用比率)到寄存器BL。
  8. 将寄存器AL和BL相乘。
  9. 将结果(寄存器AL的值)存储到内存偏移DI中。
  10. 将SI的值增加1。
  11. 在3之上循环直到寄存器CX变为0。

程序 –

MEMORY ADDRESS MNEMONICS COMMENT
400 MOV SI, 500 SI<-500
403 MOV CL, [SI] CL<-[SI]
405 MOV CH, 00 CH<-00
407 INC SI SI<-SI+1
408 MOV AL, [SI] AL<-[SI]
40A INC SI SI<-SI+1
40B MOV DI, 600 DI<-600
40E MOV [DI], AL [DI]<-AL
410 INC DI DI<-DI+1
411 DEC CL CL<-CL-1
412 MOV BL, [SI] BL<-[SI]
414 MUL BL AX<-AL*BL
416 MOV [DI], AL [DI]<-AL
418 INC DI DI<-DI+1
419 LOOP 414 JUMP TO 414 IF CX!=0 and CX=CX-1
41B HLT end

解释 –

  1. MOV SI,500:将SI的值设置为500。
  2. MOV CL,[SI]:将数据从偏移量SI加载到寄存器CL。
  3. MOV CH,00:将寄存器CH的值设置为00。
  4. INC SI:将SI的值增加1。
  5. MOV AL,[SI]:从偏移量SI加载到寄存器AL的值。
  6. INC SI:将SI的值增加1。
  7. MOV DI,500:将DI的值设置为600。
  8. MOV [DI],AL:将寄存器AL的值存储在偏移量DI处。
  9. INC DI:将DI的值增加1。
  10. DEC CL:将寄存器CL的值减1。
  11. MOV BL,[SI]:从偏移量SI加载到寄存器BL的值。
  12. MUL BL:将寄存器AL的值乘以BL。
  13. MOV [DI],AL:将寄存器AL的值存储在偏移量DI处。
  14. INC DI:将DI的值增加1。
  15. 循环414:如果CX不为0并且CX = CX-1,则跳转到地址414。
  16. HLT:停止