📜  8086程序,用于确定n个数字数组中的数字立方体

📅  最后修改于: 2021-06-28 09:33:55             🧑  作者: Mango

问题–在8086微处理器中编写一个程序,以找出8位n个数字的多维数据集,其中大小“ n”存储在偏移量500中,并且该数字存储在偏移量501中,并将结果数字存储到偏移量501中。(假设多维数据集仅限制在8位以内)。

例子 –

算法 –

  1. 将500存储到SI中,并将数据从偏移500加载到寄存器CL中,并将寄存器CH设置为00(用于计数)。
  2. 将SI的值增加1。
  3. 将偏移量SI中的编号(值)加载到寄存器AL中。
  4. 将寄存器AL的值移至BL。
  5. 自身乘以寄存器AL中的值。
  6. 将寄存器AL中的值乘以BL。
  7. 将结果(寄存器AL的值)存储到存储器偏移SI中。
  8. 将SI的值增加1。
  9. 在6之上循环直到寄存器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 MOV BL, AL BL<-AL
40C MUL AL AX=AL*AL
40E MUL BL AX=AL*BL
410 MOV [SI], AL AL->[SI]
412 INC SI SI<-SI+1
413 LOOP 408 JUMP TO 408 IF CX!=0 and CX=CX-1
415 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. MOV BL,AL:将寄存器AL的值移动到BL。
  7. MUL AL:将寄存器AL的值乘以AL。
  8. MUL BL:将寄存器AL的值乘以BL。
  9. MOV [SI],AL:将寄存器AL的值存储在偏移SI中。
  10. INC SI:将SI的值增加1。
  11. 回路408:如果CX不为0并且CX = CX-1,则跳转到地址408。
  12. HLT:停止