当前位置:首页 > IBM_PC汇编语言程序的设计课后习题答案(第二版沈美明))
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
AF: AND AL, 1101 1111B ;转换为大写字母
CMP AL, 41H ;又 JB INPUT ;不是‘A~F’的数重新输入 CMP AL, 46H ;>F吗? JA INPUT ;不是‘A~F’的数重新输入 AND AL, 0FH ;转换为:1010B~1111B ADD AL, 9 BINARY: OR BL, AL ;将键盘输入的数进行组合 DEL CH JNZ INPUT DISPN: MOV CX, 16 ;将16位二进制数一位位地转换成ASCII码显示 DISP: MOV DL, 0 ROL BX, 1 RCL DL, 1 OR DL, 30H MOV AH, 2 ;进行显示 INT 21H LOOP DISP STOP: RET 5.10 设有一段英文,其字符变量名为ENG,并以$字符结束。试编写一程序,查对单词SUN在该文中的出现次数,并以格式“SUN:xxxx”显示出次数。 答:程序如下:
共分享92篇相关文档