LOOPNZ COMPARE ;不是,比较下一个数 JNZ STOP ;没有偶数,退出
JCXZ STOP ;最后一个数是偶数,即为最小偶数,退出 COMPARE1: MOV DX, DATA[BX] ;取数组的下一个偶数 ADD BX, 2
TEST DX, 01H ;是偶数吗? JNZ NEXT ;不是,比较下一个数 CMP AX, DX ;(AX)<(DX)吗? JLE NEXT
MOV AX, DX ;(AX)<(DX),则置换(AX)为最小偶数 NEXT: LOOP COMPARE1 STOP: RET
5.8 把AX中存放的16位二进制数K看作是8个二进制的“四分之一字节”。试编写程序要求数一下值为3(即11B)的四分之一字节数,并将该数(即11B的个数)在终端上显示出来。 答:程序段如下:
BEGIN: MOV DL, 0 ;计数初始值 MOV CX, 8
COMPARE: TEST AX, 03H ;是数03吗? JNZ NOEQUAL ;不是,转走 INC DL ;是,计数
NOEQUAL: ROR AX, 1 ;准备判断下一个数 ROR AX, 1 LOOP COMPARE
ADD DL, ‘0’ ;将计数值转换为ASCII码 MOV AH, 2 ;进行显示 INT 21H STOP: RET
5.9 试编写一个汇编语言程序,要求从键盘接收一个四位的16进制数,并在终端上显示与它等值的二进制数。 答:程序段如下:
BEGIN: MOV BX, 0 ;用于存放四位的16进制数 MOV CH, 4 MOV CL, 4
INPUT: SHL BX, CL ;将前面输入的数左移4位 MOV AH, 1 ;从键盘取数 INT 21H
CMP AL, 30H ;<0吗?
JB INPUT ;不是‘0~F’的数重新输入 CMP AL, 39H ;是‘0~9’吗? JA AF ;不是,转‘A~F’的处理 AND AL, 0FH ;转换为:0000B~1001B JMP BINARY
相关推荐: