DOS Windows汇编语言程序设计 第4章 16位汇编应用举例ppt课件.ppt

DOS Windows汇编语言程序设计 第4章 16位汇编应用举例ppt课件.ppt

ID:58885544

大小:126.00 KB

页数:68页

时间:2020-09-30

DOS Windows汇编语言程序设计 第4章 16位汇编应用举例ppt课件.ppt_第1页
DOS Windows汇编语言程序设计 第4章 16位汇编应用举例ppt课件.ppt_第2页
DOS Windows汇编语言程序设计 第4章 16位汇编应用举例ppt课件.ppt_第3页
DOS Windows汇编语言程序设计 第4章 16位汇编应用举例ppt课件.ppt_第4页
DOS Windows汇编语言程序设计 第4章 16位汇编应用举例ppt课件.ppt_第5页
资源描述:

《DOS Windows汇编语言程序设计 第4章 16位汇编应用举例ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第4章16位汇编应用举例如何用汇编去实现高级语言的功能。如何在底层实现键盘控制。如何在底层实现视频控制。如何在底层实现磁盘扇区操作。如何在底层实现定时器应用。模拟C语言函数实现1.把数据转换为字符串在C语言下有这样一个函数:char*_ltoa(longvalue,char*string,intradix);它把数值value按radix进制转换到字符串string,为了简单起见,我们只实现最复杂的一种,即转换为用10进制表示的字符串。算法为:(1)设置标志FLAG,以决定是否显示负号;(2)SOURCE和0

2、比较,为负则取负数的绝对值,FLAG置1;(3)将SOURCE送AX,AX循环除以10,余数(DX)为要显示的位值,加’0’变为字符压入堆栈。一直循环到AX为0为止,入栈次数存DI;(4)若FLAG=1,负号入栈;(5)按入栈次数依次出栈,送DL,用INT21H功能2显示。.MODELSMALL,C_LTOAPROTO:WORD;过程声明.DATACR=13;定义回车键值常量,等于13LF=10;定义换行键值常量,等于10DATA1DD-8654.CODE;子程序_LTOA是按十进制输出16位二进制数值SOU

3、RCE.CODE.STARTUPINVOKE_LTOA,DATA1INVOKE_LTOA,-2345.EXIT0_LTOAPROCUSESDIDXSIBXSOURCE:WORDLOCALFLAG:BYTE;用来描述正负MOVFLAG,0;初始化MOVAX,SOURCEXORDI,DIMOVSI,10CMPAX,0JGENEXT;有符号比较指令,AX大于等于0则跳NEXTMOVFLAG,1;FLAG=1,负数NOTAX;取反ADDAX,1;上两条指令把AX变为绝对值,如-12341234INCDINEXT:.

4、REPEAT;本循环把16位二进制数转换成十进制XORDX,DX;能省掉么?不能,后面要用它放余数DIVSIADDDL,'0'PUSHDXINCDI.UNTILAX==0;FLAG=1,为负,负号入堆栈.IFFLAG==1MOVDL,'-'PUSHDX.ENDIFMOVCX,DI;入栈的次数送给CX;本循环把堆栈中的字符串显示出来.REPEATPOPDX;显示字符送DLMOVAH,2;DOS功能2INT21H.UNTILCXZ;CX=0,退出;下面六条指令显示回车、换行MOVDL,CRMOVAH,2INT21

5、HMOVDL,LFMOVAH,2INT21HRET_LTOAENDPEND字符串操作计算字符串长度在C语言中有函数strlen,格式如下:size_tstrlen(constchar*string);它用来计算字符串长度,输入参数string为0结尾的字符串,返回值为长度。我们用_strlen模拟它,算法为:从第一个字符开始计数,依次检查其是否为0;为0则将计数值送AX,然后返回,否则检查下一个字符。_strlenPROCUSESBXCX_string:WORD;_STRING为字符串的偏移地址MOVBX,_

6、stringXORCX,CXAGAIN:MOVAL,[BX]CMPAL,0;AL为0,到结尾JZ_OKINCCXINCBXMOVAL,[BX]JMPAGAIN_OK:MOVAX,CX;返回的长度送AXRET_strlenENDP4.2键盘中断键盘控制原理键盘数据的接收由PC机8255可编程芯片来实现的。在键盘内部有一个微处理器INTEL8048,它从系统板接收时钟信号,读取每个键入的键值,将键的扫描码送到8255的PA端口(60H)内,同时产生一个中断号为9的中断。PB端口(61H)的第7位用来控制PA端口数

7、据的接收,该位为0时表示允许键盘输入,为1时表示禁止键盘输入。中断9的任务是,读取扫描码并把应答信号送到键盘、把扫描码转换为字符码或控制变换键和将字符码放入键盘缓冲区内。将PB端口的第7位设置为1,键盘将不能接收数据INAL,61HORAL,80HOUT61H,AL下面的代码恢复键盘的输入功能INAL,61HANDAL,7FHOUT61H,AL不依靠中断,直接从芯片读键盘信息下面的代码读取键盘的扫描码并向键盘发送应答信号:INAL,60H;从PA端口读取键盘扫描码PUSHAX;存到堆栈INAL,61H;读取P

8、B端口信息ORAL,80H;位7置1OUT61H,AL;设置PB端口位7为1ANDAL,7FH;位7置0OUT61H,AL;复位键盘应答位从键盘缓冲区直接读键盘扫描码键盘缓冲区是一个先进先出的环形队列,其所占内存区域如下:缓冲区头指针:WORD类型,其内存地址为0000:041AH。缓冲区尾指针:WORD类型,其内存地址为0000:041CH。键盘信息缓冲区:其内存地址为0000:041EH~000

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。