📜  8086程序打印输入整数表

📅  最后修改于: 2021-06-28 15:24:07             🧑  作者: Mango

问题–在8086中编写汇编语言程序以打印输入整数表。

假设–假设输入的数字位于存储位置500,并且表格将从起始位置600到609以十六进制打印。

例子 –

算法 –

  1. 将输入的数字地址加载到SI中,也将要输出的地址加载到DI中。
  2. 将00存储在CH寄存器中。
  3. 将CH的值增加1,然后将[SI]的内容移到AH寄存器中。
  4. 将AL和CH的内容相乘并存储在AX中,然后将AL的内容移到[DI]中,然后将DI的值加1。
  5. 比较CH和0A的值,如果不相等,则转到第3步,否则暂停程序。

程序 –

ADDRESS MNEMONICS COMMENTS
400 MOV SI, 500 SI<-500
403 MOV DI, 600 DI<-600
406 MOV CH, 00 CH<-00
408 INC CH CH<-CH+1
409 MOV AL, [SI] AL<-[SI]
40B MUL CH AX<-AL*CH
40D MOV [DI], AL [DI]<-AL
40F INC DI DI<-DI+1
410 CMP CH, 0A CH-0A
413 JNZ 408 jump to address 408 if zero flag is 0
415 HLT Terminates the program

解释 –

  1. MOV SI,500:在SI中加载500。
  2. MOV DI,600:在DI中加载600。
  3. MOV CH,00:将00数据加载到CH寄存器中。
  4. INC CH:将CH寄存器中的值加1。
  5. MOV AL,SI:将SI的内容移到AL寄存器中。
  6. MUL CH:将AL和CH寄存器的内容相乘并存储在AX寄存器中。
  7. MOV [DI],AL:将AL寄存器的内容移至[DI]。
  8. INC DI:将DI的值增加1。
  9. CMP CH,0A:将CH寄存器和0A内的数据相减。
  10. JNZ 408:如果零标志为0,则跳转到地址408。
  11. HLT:终止程序。