
汇编语言题目 要masm可以运行的 高分求解答
将AX中存放的16位二进制数K看作是8个二进制的"四分之一字节",试编写一个程序,要求数一下值为3的四分之一字节数,并将该数在终端上显示出来...
将AX中存放的16位二进制数K看作是8个二进制的"四分之一字节",试编写一个程序,要求数一下值为3的四分之一字节数,并将该数在终端上显示出来
展开
3个回答
展开全部
以下为已调试通过的源程序:
.MODEL SMALL
.CODE
.STARTUP
MOV CX, 8 ; 8次循环计数
MOV DL, 0 ; 记录值为3的四分之一节节的个数
AGAIN:
ROL AX, 1 ; 循环左移两次,将最高两位移到最低两位
ROL AX, 1
XOR AX, 3 ; 为了检测最低两位是否同时为1,用异或将最低两位取反
TEST AX, 3 ; 测试最低两位
JNZ SKIP ; 若最低两位中有1,则跳过
INC DL ; 否则,取反后的最低两位同时为0,即原来的最低两位(一个四分之一字节)为3,计数加1
SKIP:
XOR AX, 3 ; AX还原
LOOP AGAIN ; 循环,共8次
ADD DL, 30H ; 将统计结果(小于等于8)转为ASCII
MOV AH, 2 ; 显示统计结果
INT 21H
.EXIT
END
.MODEL SMALL
.CODE
.STARTUP
MOV CX, 8 ; 8次循环计数
MOV DL, 0 ; 记录值为3的四分之一节节的个数
AGAIN:
ROL AX, 1 ; 循环左移两次,将最高两位移到最低两位
ROL AX, 1
XOR AX, 3 ; 为了检测最低两位是否同时为1,用异或将最低两位取反
TEST AX, 3 ; 测试最低两位
JNZ SKIP ; 若最低两位中有1,则跳过
INC DL ; 否则,取反后的最低两位同时为0,即原来的最低两位(一个四分之一字节)为3,计数加1
SKIP:
XOR AX, 3 ; AX还原
LOOP AGAIN ; 循环,共8次
ADD DL, 30H ; 将统计结果(小于等于8)转为ASCII
MOV AH, 2 ; 显示统计结果
INT 21H
.EXIT
END
追问
MASM里面报错呀
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询