资源描述:
《显示结果输出小写字母个数》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、CRLF(变量名)MACRO(宏标号)MOVDL,0DH:(把0DH放进DL里面,在ASCII中表回车)MOVAH,2:(AH02命令:输出)INT21H://调用DOS系统功能调INT21H其中的2号AH功能调用参数返回参数02显示输出DL=输出字符 MOVDL,0AH:(把0AH放进DL里面,在ASCII中表回车)MOVAH,2:(AH02命令:输出)INT21H://调用DOS系统功能调INT21H其中的2号AH功能调用参数返回参数02显示输出DL=输出字符 ENDMDATASEGMENT:(定义数据段)DAT1DB11:(定义DAT1,允许第一个字节最大允许输入10个字符)D
2、B?:(实际键盘输入的个数)DB11DUP(?):(实际存放键盘输入的字符)COUNTEQU$-DAT1://表示获得输入了多少个字符,$表示当前地址,DAT1表示此变量首地址相减表示个数DAT2DB10DUP(?):(定义DATA2,其中开辟10个字节的空间,用于存放DATA1复制过来的内容,因为DATA1最大是10个字符,所以DATA2也开辟最大,以防止DATA110个字符都是小写字符)RSDB?:(用于统计共有几个小写字符//按照题目要求,统计的小写个数存放在此地址上。)DATAENDS:(字符段定义结束)CODESEGMENT:(代码段开始声明)ASSUMECS:CODE,D
3、S:DATA:(分配语句,设置各段与段寄存器的关联)START:MOVAX,DATA:(把数据段首地址存放到AX)MOVDS,AX(DS寄存器存放数据段首地址,DS寄存器表示数据段段寄存器DS)MOVDX,OFFSETDAT1:(//表示把DAT1的偏移地址放入DX通用寄存器中,请明确注意什么是偏移地址,相对于谁偏移,偏移多少怎么计算此指令相当于LEADXDAT1请查询LEA指令MOVAH,0AH:(调用十号中断,键盘输出:0A=10)INT21H:(调用int21指令)//DOS系统功能调INT21HAH功能调用参数返回参数0A键盘输入到缓冲区DS:DX=缓冲区首地址(DS:DX)
4、=缓冲区最大字符数(DS:DX+1)=实际输入的字符数MOVBX,OFFSETDAT1:(将DAT1的偏移地址送到BX)MOVSI,OFFSETDAT2:(讲DAT2的偏移地址送到SI)XORDL,DL:(//异或运算把DL清零)MOVCX,COUNT:(把count放到CX里面)LOP:MOVAL,[BX]:(//该偏移地址的数据传送到寄存器AX中)其中请明确这个寻址方式是什么???解释BX寄存器中存放的是数据DAT1的首地址//加入[]表示取出BX寄存器中存放的地址中的内容,然后把这个内容送入AL寄存器)CMPAL,7AH:(/CMP的实质是AL-7AH这个指令会影响标志寄存器。
5、)JAENEXT:(比7AH大)//7A表示ASCII的小z/比大那么跳转请查询书查看JAE跳转是根据判断哪个标志寄存器中的标志位!!!//61表示ASCII的小a//比小那么跳转请查询书查看JB跳转是根据判断哪个标志寄存器中的标志位!!!CMPAL,61H:(比7AH小后跟61H做比较)JBNEXT:(比61H大)MOV[SI],AL//把AL寄存器中的内容,存放到SI寄存器中存放地址所对应的空间中INCSI//明确这个是地址自加相当于指针后移动INCDL/DL存放的是统计小写字母的个数NEXT:INCBX/明确这个是地址自加相当于指针后移动LOOPLOP循环指令跳转到LOP标号处
6、继续执行//每次执行一次LOOP都是相当于先执行CX计数寄存器减一然后判断是否为0不为零那么继续一次循环执行!!!DONE:MOVRS,DLMOVBL,RS//DL中存放的是统计小写字母的个数根据题目的要求需要把这个数值写入RS这个地址空间中!!!CRLF:(执行宏指令回车换行)//调用宏指令执行回车换行!!!CALLDISPP:(调用子程序)调用子程序用于显示统计的个数MOVAH,4CH:(退出程序,返回到dos)INT21H:(最大存储字符数字不能超过20个)DISPPPROCMOVDL,BL:(把BL存放到DL内)MOVCL,04H:(把04H存放到CL内)ROLDL,CL:(
7、循环字符串指令,左移,移出的前四位移到了末位)ANDDL,0FH:(AND与运算,把DL前四位清空)ADDDL,30H:(DL+30,ASCII的意思)CMPDL,3AH:(DL与30H做比较)JBDDD:(比30H大)ADDDL,07H:(比30H小加07H)DDD:MOVAH,02H:(把02放入AH)INT21H://DOS系统功能调INT21H4C带返回码结束AL=返回码 MOVDL,BL:(把BL存放到DL)ANDDL,0FH:(AND与运算,把