汇编语言程序设计课件-第4讲-基本输入输出程序_第1页
汇编语言程序设计课件-第4讲-基本输入输出程序_第2页
汇编语言程序设计课件-第4讲-基本输入输出程序_第3页
汇编语言程序设计课件-第4讲-基本输入输出程序_第4页
汇编语言程序设计课件-第4讲-基本输入输出程序_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第四讲基本输入/输出程序键盘输入程序设计显示输出程序设计指令学习本讲小结作业1、键盘输入程序键盘输入方法使用DOS功能调用INT21h

AH=01 键盘输入并回显

从标准输入设备读取字符,带回显,字符的ASCII码存放在AL.如果键盘缓冲区没有字符,将等待输入。AH=07 键盘输入(无回显)

从标准输入设备读取字符,无回显,字符的ASCII码存放在AL.如果键盘缓冲区没有字符,将等待输入。其它方法INT21HAH=08,AH=0AINT16H注意在AL中存放的是字符的ASCII码带回显和不带回显的使用场合键盘输入示例1接受键盘输入的字符保存在DL寄存器中程序1(带回显)movah,1int21hmov

dl,alint20h程序2(无回显)movah,7int21hmov

dl,alint20h键盘输入示例2将键盘输入的一个一位数保存在DL寄存器中程序1movah,1int21hsubal,‘0’;数字0的ASCII码30Hmovdl,alint20h键盘输入示例3接受键盘输入的两个一位整数,计算和并保存在DL寄存器中思路输入第一个一位数CH输入第二个一位数CL计算CH+CLDL程序movah,1int21hsubal,30Hmov

cl,al;输入的第1个数据存放在cl中movah,1int21hsubal,30hmov

ch,al ;输入的第2个数据存放在ch中mov

dl,cladddl,chint20h键盘输入示例4接受键盘输入的一个两位正整数,保存在DL寄存器中思考两位正整数的输入假设是xy(x为十位数,y为个位数)使用键盘输入首先接收到的是x,然后是y在DL中要保存的是使用x和y计算出的数 怎样计算?DL10x+y思路输入的十位数

CH输入的个位数 CL计算CH+CL DL乘法指令MUL<8位寄存器> ;(AX)(AL)x<8位数据>MUL<16位寄存器> ;(DX,AX)(AX)x<16位数据>键盘输入示例4(续)程序movah,1int21hsubal,30Hmov

ch,al ;输入的十位数存放在cl中movah,1int21hsubal,30hmov

cl,al ;输入的个位数存放在ch中mov

al,chmul

cl ;乘法指令ax=al*clmov

dl,al ;ah?int20h思考如果要输入更多位的数据如何处理?如果要输入带符号数如何处理?如果输入的是其他信息呢?2、显示输出程序设计显示输出基本方法使用DOS功能调用INT21h

AH=02

显示输出将字符输出到标准输出设备,要显示字符的ASCII码存放在DL中。显示后AL=DL注意在DL中存放的是要显示字符的ASCII码例MOVAH,2MOVDL,36H;'6'的ASCII码INT21HINT20H其它方法AH=09

显示字符串显示输出示例1将从键盘输入的一个一位数N(0<=N<5)的2倍计算输出。要求输出格式:<N>例如输入3,输出<6>思路首先接收键盘输入的一个一位数al中然后计算AL*2AL最后输出AL的值备注这个过程是标准的IPOS四种操作。显示输出示例1(流程图)思路首先接收键盘输入的一个一位数al中然后计算AL*2AL最后输出AL的值程序1MOVAH,1INT21HSUBAL,30HADDAL,ALMOVDL,'<'MOVAH,2INT21HMOVDL,ALADDDL,30HMOVAH,2INT21HMOVDL,'>'MOVAH,2INT21HINT20H开始输入AL计算ALALx2输出AL的值结束显示输出示例1(程序调试)该程序有错误!跟踪后发现什么?错误原因使用DOS功能调用INT21h

AH=2

将字符输出到标准输出设备,显示字符的ASCII码存放在DL中。显示后AL=DL程序2MOVAH,1INT21HSUBAL,30HADDAL,ALMOVCL,AL ;保存在cl中MOVDL,'<'MOVAH,2INT21HMOVDL,CL ;从cl中取出数据ADDDL,30HMOVAH,2INT21HMOVDL,'>'MOVAH,2INT21HINT20H是否发现寄存器越来越不够用了显示输出示例2输出HELLO!思路该程序目前我们只能一个字符一个字符输出程序简化MOVAH,2MOVDL,'H'INT21HMOVDL,'E'INT21HMOVDL,'L'INT21HMOVDL,'L'INT21HMOVDL,'O'INT21HMOVDL,'!'INT21HINT20H是不是都可以这样做?不是所有程序都能这样处理!!!!MOVAH,2MOVDL,'H'INT21HMOVAH,2MOVDL,'E'INT21HMOVAH,2MOVDL,'L'INT21HMOVAH,2MOVDL,'L'INT21HMOVAH,2MOVDL,'O'INT21HMOVAH,2MOVDL,'!'INT21HINT20H显示输出示例3将CL中的无符号数用十进制显示出来分析CL中的无符号数的范围000~255要显示3位数(3个字符)显示次序:先高位后低位思路首先求得百位数并输出然后求得十位数并输出最后求出个位数并输出怎样求?显示输出示例3(数学准备)数学准备假设一个3位数abc如何知道a=?用abc/100的商数就是a如何知道b=?可以用abc/10吗?只能用bc/10的整数部分就是b。bc

是什么? 是abc/100的余数换个角度看abc/10的余数是什么?是Cabc/10的商呢?是abab/10的余数呢? 商呢?是b 是a哪一种好?各有特点我们使用第一种方法指令介绍乘法指令 P64无符号数乘法 MUL src带符号数乘法 IMULsrcsrc是字节 (AX)(AL)*(src)src是字 (DX,AX)(AX)*(src)除法指令 P66无符号数除法 DIVsrc带符号数除法 IDIVsrcsrc是字节 (AL)(AX)/(src)

的商(AH)(AX)/(src)

的余数src是字(AX)(DX,AX)/(src)

的商(DX)(dx,AX)/(src)

的余数显示输出示例3MOVAH,0MOVAL,CL MOVBL,100DIVBL;AL是商aAH是余数bcMOVAH,2MOVDL,ALADDDL,30HINT21H ;显示百位数a MOVBL,10MOVAL,AHMOVAH,0DIVBL;AL是商bAH是余数cMOVAH,2MOVDL,ALADDDL,30HINT21H ;显示十位数bMOVAH,2MOVDL,AHADDDL,30HINT21H ;显示个位数cINT20H求百位数并显示求十位数并显示求个位数并显示WHY!?显示输出示例3(修改)MOVAH,0MOVAL,CLMOVBL,100DIVBLMOVBH,AHMOVAH,2MOVDL,ALADDDL,30HINT21HMOVBL,10MOVAH,0MOVAL,BHDIVBLMOVBH,AHMOVAH,2MOVDL,ALADDDL,30HINT21HMOVAH,2MOVDL,BHADDDL,30HINT21HINT20HMOVAH,0MOVAL,CL MOVBL,100DIVBL;AL是商aAH是余数bcMOVAH,2MOVDL,ALADDDL,30HINT21H ;显示百位数a MOVBL,10MOVAL,AHMOVAH,0DIVBL;AL是商bAH是余数cMOVAH,2MOVDL,ALADDDL,30HINT21H ;显示十位数bMOVAH,2MOVDL,AHADDDL,30HINT21H ;显示个位数cINT20H指令小结乘法指令 P64MUL P445IMUL P440除法指令 P63DIV P439IDIV P440注意标志位 (见教材,检查位数的变化)乘法 x---uuuux(见教材,检查结果位数的变化)除法 u---uuuuu

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论