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

📅  最后修改于: 2021-06-28 16:59:44             🧑  作者: Mango

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

例子 –

算法 –

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