;试编写一个汇编语言程序,求出首地址为DATA的100D字数组中的最小偶数,并把它存放在AX中
DATASSEGMENT
DATA DW 1,2,3,4,5
DATASENDS
CODESSEGMENT
MAINPROCFAR
ASSUMECS: CODES, DS: DATAS
START:
PUSHDS
SUBAX, AX
PUSHAX
MOVAX, DATAS
MOVDS, AX
;----------------------------------------
MOVBX, 0
MOVCX, 5
COMPARE:
MOVAX, DATA[BX];取数组的第一个偶数
ADDBX, 2
TESTAX, 01H;是偶数吗?
LOOPNZ COMPARE;不是,比较下一个数
JNZSTOP;没有偶数,退出
JCXZSTOP;最后一个数是偶数,即为最小偶数,退出
COMPARE1:
MOVDX, DATA[BX];取数组的下一个偶数
ADDBX, 2
TESTDX, 01H;是偶数吗?
JNZNEXT;不是,比较下一个数
CMPAX, DX ;(AX)<(DX)吗?
JLENEXT
MOVAX, DX;(AX)<(DX),则置换(AX)为最小偶数
NEXT:
LOOPCOMPARE1
STOP:
RET
MAINENDP
CODESENDS
END START
////////////////////////////////////////////////
汇编与ACM一样,算法确定了在去写代码
////////////////////////////////////////////////////
ADD 指令会修改标志位SF 的值
//////////////////////////////////////////////////
TEST 两个数与操作修改标志位
LOOPNZ 不为零/不相等时循环 LOOPNZ/LOOPNE
JNZ CF=0跳转
JCXZ CX内容为零 则转移
JLE (SF异或OF)与ZF=1 被减数不大于减数则转移