汇编语言程序设计实例分析课件.ppt

汇编语言程序设计实例分析课件.ppt

ID:57138432

大小:39.00 KB

页数:19页

时间:2020-08-01

汇编语言程序设计实例分析课件.ppt_第1页
汇编语言程序设计实例分析课件.ppt_第2页
汇编语言程序设计实例分析课件.ppt_第3页
汇编语言程序设计实例分析课件.ppt_第4页
汇编语言程序设计实例分析课件.ppt_第5页
资源描述:

《汇编语言程序设计实例分析课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、汇编语言程序设计实例分析注意事项:1.按照程序分段的原则,合理设定各段内容2.凡是用到内存单元的数据、变量及符号地址等应该在数据段或堆栈段中加以描述3.程序的执行顺序由逻辑地址CS:IP确定CS-当前指令所在代码段的段地址IP-要执行的下一条指令的偏移地址例1:将内存缓冲区中以BUFA开始的一组字数据传送到BUFB开始的内存区DATASEGMENTBUFADW367BH,2845H,0A78H,9DE3H,0F6BH,6532HCOUNTEQU($-BUFA)/2BUFBDWCOUNTDUP(?)DATAENDSSTACKSEGMENTSTACKDB200DUP(?)STACKENDS

2、CODESEGMENTASSUMEDS:DATA,SS:STACK,CS:CODESTART:MOVAX,DATAMOVDS,AXMOVSI,0;初始化MOVDI,0MOVCX,COUNT;计数器初值LOP:MOVAX,BUFA[SI];取数MOVBUFB[DI],AX;送数INCSI;字数据占用2个单元INCSI;地址加2INCDIINCDIDECCX;计数器减1JNZLOP;非0转MOVAH,4CHINT21HCODEENDSENDSTART例2:已知在内存中从BLOCK单元起存放有20个带符号字节数据,统计其中负数的个数并放入COUNT单元DATASEGMENTBLOCKDB-7

3、,1,12,-90,-70,34,-1,56DB45,-12,-3,-4,23,0,12DB11,-9,-8,67,-56CNEQU$-BLOCKCOUNTDB?DATAENDSCODESEGMENTASSUMEDS:DATA,CS:CODESTART:MOVAX,DATAMOVDS,AXMOVDL,0;初始化DLLEASI,BLOCK;取有效地址MOVCX,CN;取计数器初值LP:MOVAL,[SI];取数TESTAL,80H;测试符号位JZNEXT;非0转INCDL;为负数时计数NEXT:INCSI;地址加1LOOPLP;循环MOVCOUNT,DL;保存负数个数MOVAH,4CHI

4、NT21HCODEENDSENDSTART例3:设计一个程序,统计内存W单元保存的无符号字数据中有多少个二进制“1”,结果送内存N单元保存分析:要统计内存W单元保存的无符号字数据中有多少个二进制“1”,可将该数据送至寄存器AX中,通过移位指令将AX中的每一位依次移入进位位CF中,若CF=1则计数器CL的值加1。 这样就可以统计出AX中1的个数。DATASEGMENTWDW0F0FH;定义字数据NDB?;设置计数单元DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVCL,0;计数器清零MOVAX,W;取数

5、到AXAA:ANDAX,AX;判AX=0?JZCC;为0转移到CCSHLAX,1;逻辑左移1位JNCBB;无进位转BBINCCL;有“1”则计数BB:JMPAA;无条件转AACC:MOVN,CL;结果送N单元MOVAH,4CHINT21HCODEENDSENDSTART例4:设计一个程序,连续将键盘输入的小写字母转为大写字母,字母之间用“-”号间隔CODESEGMENTASSUMECS:CODESTART:MOVAH,01H;DOS调用,从键盘输入1个字符INT21HMOVBL,AL;保存在BL中MOVDL,‘-’;送‘-’号到DLMOVAH,02H;显示字符‘-’INT21HMOVA

6、L,BL;取回键盘输入的字符CMPAL,‘a’;与‘a’比较JBEXIT;低于转EXITCMPAL,‘z’;与‘z’比较JAEXIT;高于转移到EXITSUBAL,20H;取大写字母MOVDL,AL;输出MOVAH,02HINT21HMOVDL,0AH;调用换行MOVAH,02HINT21HMOVDL,0DH;调用回车MOVAH,02HINT21HJMPSTART;无条件转EXIT:MOVAH,4CHINT21HCODEENDSENDSTART例5:设计子程序,实现用DOS功能调用完成屏幕光标回车和换行的处理功能本题在子程序中实现DOS的功能调用,调用的基本步骤和方法是:在指定寄存器中

7、设置入口参数;在AH寄存器中设置系统功能调用号;采用中断调用指令INT21H来实现功能调用。子程序如下:STARPROCFAR;定义过程名为STARPUSHAX;保护现场PUSHDXMOVDL,0DH;入口参数,回车CR的ASCII码MOVAH,02H;设置系统功能号INT21H;DOS调用,显示字符MOVDL,0AH;入口参数,换行LR的ASCII码MOVAH,02H;设置系统功能号INT21H;DOS调用,显示字符POPDX;恢复现场POP

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

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

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