试编写一个子程序统计八位二进制数中有几个取值为“1”的位。另编写一个程序,利用这个子程序,统计数组BINX各元
ORG 10H
BINX:DB 28,150,45,90
DB 160,99,210,63
NIIN EOU $-BINX
BITN: DS NUM
ORG 10H
BINX:DB 28,150,45,90
DB 160,99,210,63
NIIN EOU $-BINX
BITN: DS NUM
试编写子程序,使间址寄存器R0所指向的连续两个片外RAM单元中的低4位二进制数,合并为一个字节(R0指向低位地址,合并时放在高4位),并仍存放在R0所指的外RAM单元中。
(1)子程序入口地址(标号):BINCHR;
(2)入口参数:AL=8位二进制数;
DI=ASCII数字串首地址(位于数据段中);
(3)出口参数:无;
(4)不影响其他寄存器。
试编写一个子程序,判断寄存器AR中有符号数(补码)的正负,并按以下要求设置标志CF、ZF的状态(要求:子程序执行不能破坏AR的内容)。
试编写一个取多字节数据绝对值的子程序。已知该子程序的出入口参数是:
入口参数:IX=多字节数据首地址、BR=数据长度(字节数)。
出口参数:-。
设有一篇英文短文,每个单词之间是用空格分开的,试编写一算法,按照空格数统计短文中单词的个数。
算法分析如下:要统计单词的个数先要解决如何判别一个单词,应该从输入行的开头一个字符一个字符地去辨别。假定把一个文本行放在数组s中,那么就相当于从s[0]开始逐个检查数组元素,经过若干个空格符之后找到的第一个字母就是一个单词的开头,此时利用一个统计计数器num进行累加1运算,在此之后若连续读到的是非空格字符,则这些字符属于刚统计到的那个单词,因此不应将计数器num累加1,下一次记数应该是在读到一个或几个空格后再遇到非空格字符开始。因此,统计一个单词时不仅要满足当前所检查的这个字符是非空格,而且要满足所检查的前一个字符是空格。
试编写一递归子程序,完成指数函数Xn的运算。X和n在主程序中给定。
(1)把其中的字母字符取出存放在ALPH起的单元中。
(2)把已取出的字母字串中重复的字符删除,并向前递补。
(3)在不重复的字母串中,把小写字母改为大写字母。如有重复的大写字母,先删除重复大写字母并由后续字符向前递补。
(4)统计不重复大写字母总数,并显示大写字母串。
(5)显示处理后的字符串。
按上述要求分别编写子程序。并构成一个主程序、子程序和具有嵌套调用关系的程序。
试编子程序,统计AX中二进制位是“1”的位数。已知:
入口参数:AX=16位二进制数。
出口参数:BL=统计结果。
在A址起有10个压缩型BCD数。
(1)将BCD数转为相应的ASCⅡ码。
(2)将ASCⅡ码在屏幕上显示。
试编写子程序及调用程序。