📜  汇编语言程序查找数组中的最大数字

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

问题–确定n个元素的数组中的最大数目。 n的值存储在地址2050,数组从地址2051开始。结果存储在地址3050。程序的起始地址为2000。

例子 –

算法 –

  1. 我们在A中获取数组的第一个元素
  2. 将A与数组的其他元素进行比较,如果A较小,则将该元素存储在A中,否则与下一个元素进行比较
  3. A的值就是答案

程序 –

Memory Address Mnemonics Comment
2000 LXI H 2050 H←20, L←50
2003 MOV C, M C←M
2004 DCR C C←C-01
2005 INX H HL←HL+0001
2006 MOV A, M A←M
2007 INX H HL←HL+0001
2008 CMP M A-M
2009 JNC 200D If Carry Flag=0, goto 200D
200C MOV A, M A←M
200D DCR C C←C-1
200E JNZ 2007 If Zero Flag=0, goto 2007
2011 STA 3050 A→3050
2014 HLT

说明–使用的寄存器: A,H,L,C

  1. LXI 2050将20分配给H,将50分配给L
  2. MOV C,M将内存内容(由HL寄存器对指定)复制到C(用作计数器)
  3. DCR C将C的值减1
  4. INX H将HL的值增加1。这样做是为了访问下一个内存位置
  5. MOV A,M将存储器的内容(由HL寄存器对指定)复制到A
  6. INX H将HL的值增加1。这样做是为了访问下一个内存位置
  7. CMP M通过从A中减去M来比较A和M。如果AM为负,则进位标志和符号标志将置1。
  8. 如果进位标志= 0, JNC 200D将程序计数器跳转到200D
  9. MOV A,M将存储器的内容(由HL寄存器对指定)复制到A
  10. DCR C将C的值减1
  11. 如果零标志= 0, JNZ 2007将程序计数器跳转到2007
  12. STA 3050在3050的存储位置存储A的值
  13. HLT停止执行程序,并停止任何进一步的执行