源地址、目的地址和块长度作为参数处理
4-10 设VAR1和VAR2为字变量,LAB为标号,试指出下列指令的错误,并改正之
(1) ADD VAR1,VAR2 (2) SUB AL,VAR1 (3) JMP LAB(SI) (4) JNZ VAR1 (5) JMP NEAR LAB (6) MOV AL,VAR2 4-11已知数据定义如下,问L1和L2等于多少?
B1 DB 1,2,3,‘123’ B2 DB 0 L1 EQU $-B1 L2 EQU B2-B1 答:根据题意,有: L1 = 07H-00H = 07H L2 = 06H-00H = 06H
4-12对于下列数据定义,指出以下指令的错误。
A1 DB ? A2 DB 10 K1 EQU 1024 (1) MOV K1,AX (2) MOV A1,AX (3) MOV BX,A1
MOV [BX],1000 (4) CMP A1,A2
(5) K1 EQU 2048 答:
(1) 目的操作数不能为立即数
(2) 目的操作数与源操作数类型不一致
(3) 指令MOV BX,A1中,目的操作数与源操作数类型不一致 (4) 指令CMP A1,A2中,两操作数必须有一为寄存器操作数
(5) 在MASM汇编程序中,一个符号一经EQU赋值之后,这个符号不能重新再赋值。
4-13 试编程计算Z=5X+3Y+10.已知X\\Y均放在数据段,其值由编程者自定。结果Z仍放数据段。
4-14 用查表法将键盘输入的任一个十进制数翻译为5中取2码(即5位中有2个1,3个0),从端口3F8H发送出去。十进制数与5中取2码的对应关系如下:
十进数 五中取二码 0 11000 1 00011 2 00101 3 00110 4 01001 5 01010 6 01100 7 10001 8 10010 9 10100
4-15 用查表法将存放于数据段中的一个有序的十六进制数串(范围:0-FH)翻译成ASCII码表仍放于数据段中。
4-16 试编写一程序,把X和Y中的大者存入BIG单元,若X=Y,则把其中之一
存入BIG单元。
4-17 试编写一程序,比较2个字符串STRING1和STRING2所含字符是否完全相同。若相同显示“MATCH”,反之,则显示“NO MATCH”.
4-18 设数据段中有3个变量单元A,B和C中存放有3个数,若3个数都不为0,则求出此3个数之和存入SUM单元,若有一个为0,则将其他两个单元也清零,请编写此程序。
4-19 假设已编制好5个乐曲程序,它们的入口地址存放在数据段中的跳跃表MUSICTAB。试编写一个管理程序,其功能是,根据键盘输入的乐曲编号00-04转到所点乐曲的入口,执行此乐曲程序。
4-20 编制一个能循环显示4条新闻标题的控制程序。每条新闻标题各为:NEW1,NEW2,NEW3,NEW4及其入口地址表NEWTAB DW NEW1 NEW2 NEW3 NEW4均放在数据区中
4-21 在数据段中存有一字符串(≤80个字符),以回车符CR结束。编一程序统计此字符串的长度,并将它存入数据区LENTH单元,也显示在屏幕上。
4-22 试用串操作指令将数据区一个数组BLOCK(均为字节数)中的奇数和偶数分开存放。
4-23 编一个程序,其功能是将一个字数组ARRAY中的正数和负数分开存放于以PLUS和MINUS开始的单元中,并在屏幕上显示出正数和负数的个数。设该数组长度放在数组的第一个字单元中。
4-24 现有一组无序的字:25,46,3,75,-5,30,要求对他们进行排序,其算法框图如图所示,试编写完成此功能的程序。
4-25 试编写一程序求级数 12+22+32+??的前几项和刚大于1000的项数n
4-26 数据区中有一段英文字符串ENGLISH。试编写一个程序,查对单词SUN在该字符串中出现的次数,并按后面的格式显示其出现次数:“SUN:XXXX”.
4-27 数据区中存放着一字节数组BLOCK,均为组合的十进制数。试编写一程序