📜  汇编语言程序查找字节范围

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

问题–编写一个汇编语言程序,如果输入数字BYTE1位于b / w 50H到80H之间,则将其显示在输出PORT2上。如果BYTE1小于50H,则只需在输出PORT1上打印00H。

例子:

Input:  64H
Output: output at PORT2 -->64H
Input:  40H
Output: output at PORT1 -->00H 

算法 –

  1. 将BYTE1加载到累加器A中。
  2. 将数据从累加器复制到寄存器B。
  3. 从累加器(BYTE)中减去50H。
  4. 如果减法为负,则跳转。
  5. 如果跳转条件为真,那么它将在PORT1处简单地打印00H。
  6. 如果跳转条件为假,则BYTE1将大于50H,并在进一步的说明中,还将检查BYTE1的上限80H,因此所有数字均位于50H至80H之间,这些数字将在PORT2打印。

程序 –

MEMORY ADDRESS MNEMONICS COMMENT
2000
2002
2003
2004
2007
2008
2009
200A
200B
200C
200D
200E
200F
MVI A, BYTE1
MOV B, A
SUI 50H
JC DELETE
MOV A, B
SUI 80H
JC DISPLAY
DELETE:XRA A
OUT PORT1
HLT
DISPLAY:MOV A, B
OUT PORT2
HLT
[A]<–[BYTE1]
[B]<–[A]
[A]<–[A-50]H
Jump to DELETE, if CY=1
[A]<–[B]
[A]<–[A-80]H
Jump to DISPLAY, if CY=1
[A]<–[A Exclusive OR A]
output the content of the accumulator at PORT1
program termination
[A]<–[B]
output the content of the accumulator at PORT2
program termination

解释 –

  1. MVI A,BYTE1:从BYTE1加载累加器A。
  2. MOV B,A:将累加器的内容复制到寄存器B。
  3. < SUI 50H: >从累加器(BYTE1)的内容中减去50H并将其加载到累加器中。
  4. JC DELETE: JC是带有进位标志检查条件的跳转指令,如果减法为负,则进位标志为1;如果减法为正,则进位标志为0;如果累加器内容(BYTE1)大于或等于SUI 50H,则SUI 50H为正。等于50H。如果CY = 0,结果为正,则不执行跳转。
  5. MOV A,B:将寄存器B(BYTE1)的内容复制到累加器。
  6. SUI 80H:从累加器中减去80H。如果累加器的内容小于80H,则结果为正,如果该数字在50H至7FH范围内,它将跳至DISPLAY标签,并在PORT2处显示BYTE。
  7. 如果在步骤4中, JC DELETE true表示减法结果为正,则它将跳转以删除并清除累加器的内容,并在输出PORT1处显示00H。