汇编语言程序设计.pptx
《汇编语言程序设计.pptx》由会员分享,可在线阅读,更多相关《汇编语言程序设计.pptx(35页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第4 4章汇编语言程序设计基本方法章汇编语言程序设计基本方法18 18 二月二月 2023 20231 1第第4 4章章 汇编语言程序设计基本方法汇编语言程序设计基本方法教学目标:教学目标:通过本章学习要求学生掌握汇编语言程序设计顺序结构通过本章学习要求学生掌握汇编语言程序设计顺序结构程序设计、选择结构程序设计和循环结构程序设计方法及相程序设计、选择结构程序设计和循环结构程序设计方法及相关指令;掌握串操作类指令的应用。关指令;掌握串操作类指令的应用。教学内容:教学内容:4.1 4.1 程序设计方法概述程序设计方法概述 4.2 4.2 顺序结构程序设计顺序结构程序设计 4.3 4.3 分支结构
2、程序设计分支结构程序设计 4.4 4.4 循环结构程序设计循环结构程序设计 4.5 4.5 串处理类指令串处理类指令第第4 4章汇编语言程序设计基本方法章汇编语言程序设计基本方法18 18 二月二月 2023 20232 24.1 4.1 程序设计方法概述程序设计方法概述 程序是解决某个问题的指令或语句的有序集合。汇编语程序是解决某个问题的指令或语句的有序集合。汇编语言程序设计是用言程序设计是用汇编语言指令、伪指令和宏指令汇编语言指令、伪指令和宏指令编写的程序。编写的程序。设计重在设计重在“算法算法”并遵循一定并遵循一定语法语法。语法指符合相关。语法指符合相关语言的规定;算法是实现问题求解步骤
3、和过程。语言的规定;算法是实现问题求解步骤和过程。高质量程序应具备以下几点:高质量程序应具备以下几点:1 1.程序结构清晰、简明、易读易调试。程序结构清晰、简明、易读易调试。2 2.程序代码执行速度快程序代码执行速度快。3.3.程序代码占用存储空间少。程序代码占用存储空间少。第第4 4章汇编语言程序设计基本方法章汇编语言程序设计基本方法18 18 二月二月 2023 20233 3汇编语言汇编语言程序设计的步骤程序设计的步骤汇汇编编语语言言程程序序设设计计步步骤骤1.1.分析问题分析问题通过通过分析,完成功能需求分析,完成功能需求2.2.确定算法确定算法是解决问题步骤,决定程序质量是解决问题步
4、骤,决定程序质量3.3.绘制流程图绘制流程图 算法图形化,复杂问题简单化算法图形化,复杂问题简单化4.4.分配存储单元分配存储单元 程序变量的分配及结果的暂存程序变量的分配及结果的暂存5.5.编写源程序编写源程序 按段式结构编辑汇编源程序按段式结构编辑汇编源程序6.6.静态检查静态检查 检查程序结构、指令、语法及功能检查程序结构、指令、语法及功能7.7.上机调试上机调试 编译、连接运行程序及分析结果编译、连接运行程序及分析结果第第4 4章汇编语言程序设计基本方法章汇编语言程序设计基本方法18 18 二月二月 2023 20234 4【例题例题4 4.1.1】求求3 3个字变量个字变量X X、Y
5、 Y、Z Z的和,并存入字变量的和,并存入字变量W W中。中。1.1.分析问题:分析问题:求三个变量的和即求三个变量的和即X+Y+Z WX+Y+Z W2.2.确定算法:确定算法:取第取第1 1个数到个数到AXAX寄存器,分别与第寄存器,分别与第2 2、3 3个个变量相加,结果保存到变量相加,结果保存到W W变量中。变量中。3.3.绘制流程图:绘制流程图:4.4.分配存储单元:分配存储单元:为变量为变量X X、Y Y、Z Z、W W分配字类型的存储分配字类型的存储单元单元5.5.编写程序:编写程序:6.6.静态检查:静态检查:检查是否有语法和逻辑错误检查是否有语法和逻辑错误7.7.上机调试:上机
6、调试:保存程序;编译连接;保存程序;编译连接;DEBUGDEBUG调试;查看调试;查看数据段基址和代码段基址,查看内存单元内容,运行程序,查数据段基址和代码段基址,查看内存单元内容,运行程序,查看结果。看结果。第第4 4章汇编语言程序设计基本方法章汇编语言程序设计基本方法18 18 二月二月 2023 20235 5DEBUGDEBUG调试步骤调试步骤1.U1.U反汇编反汇编2.D2.D查内存单元查内存单元3.G3.G运行运行4.D4.D查结果查结果第第4 4章汇编语言程序设计基本方法章汇编语言程序设计基本方法18 18 二月二月 2023 20236 64.24.2 顺序程序设计顺序程序设计
7、顺序结构是最基本、最简单的一种程序结构,主要由数顺序结构是最基本、最简单的一种程序结构,主要由数据传送指令、算术运算指令及逻辑运算指令组成。顺序结构中,据传送指令、算术运算指令及逻辑运算指令组成。顺序结构中,指令从上到下逐条被顺序执行。指令从上到下逐条被顺序执行。【例题例题4.24.2】编写程序:将编写程序:将FIRSTFIRST字变量与字变量与SECONDSECOND字变量字变量相加,结果存至相加,结果存至THIRD1THIRD1字变量中,然后再将字变量中,然后再将FIRSTFIRST和和SECONDSECOND两个两个字变量相乘,结果存至字变量相乘,结果存至THIRD2THIRD2双字变量
8、中。双字变量中。分析:分析:定义两个字变量并初始化,取第定义两个字变量并初始化,取第1 1个变量值到个变量值到AXAX寄寄存器,再与第存器,再与第2 2个变量相加,和存到个变量相加,和存到THIRD1THIRD1单元中;再取第单元中;再取第1 1个个变量到变量到AXAX寄存器,与第寄存器,与第2 2个变量相乘,乘积高个变量相乘,乘积高1616位在位在DXDX寄存器中,寄存器中,低低1616位在位在AXAX寄存中,并分别存到寄存中,并分别存到THIRD2THIRD2的变量中。的变量中。第第4 4章汇编语言程序设计基本方法章汇编语言程序设计基本方法18 18 二月二月 2023 20237 7【例
9、题【例题4.64.6】编写程序:输编写程序:输入入0 09 9之间任意两个数值,分别完之间任意两个数值,分别完成加法与乘法的运算并输出结果。成加法与乘法的运算并输出结果。分析:分析:用用9 9号功能,输出提号功能,输出提示信息;用示信息;用1 1号功能实现输入数据;号功能实现输入数据;用用2 2号功能实现输出数据;采用非号功能实现输出数据;采用非压缩压缩BCDBCD码存放一个十进制数。实码存放一个十进制数。实现流程图如右:现流程图如右:第第4 4章汇编语言程序设计基本方法章汇编语言程序设计基本方法18 18 二月二月 2023 20238 84.3 4.3 分支程序设计分支程序设计分支结构程序
10、设计中关键而重要的问题是设计何种运算分支结构程序设计中关键而重要的问题是设计何种运算来产生标志位,根据标志位选用合适的转移指令来产生标志位,根据标志位选用合适的转移指令。转转移移指指令令无条件转移指令无条件转移指令JMP CALL RETJMP CALL RET有条件转移指令有条件转移指令简单条件、有符号数、无符号数简单条件、有符号数、无符号数共同特点:共同特点:改变指令指针寄存器改变指令指针寄存器IPIP的值即发生跳转的值即发生跳转第第4 4章汇编语言程序设计基本方法章汇编语言程序设计基本方法18 18 二月二月 2023 20239 9分支结构程序设计方法分支结构程序设计方法 如判断某个数
11、是正数还负数。一个数是正数则最高位是如判断某个数是正数还负数。一个数是正数则最高位是0 0;一个数是负则最高位是一个数是负则最高位是1 1。因此根据运算后,去判断状态标志位因此根据运算后,去判断状态标志位SFSF的值。的值。如:如:1.TEST 1.TEST(ANDAND、OROR)如:如:TEST ALTEST AL,ALAL 2.2.测试最高位是测试最高位是0/1 0/1 如:如:TEST ALTEST AL,80H80H 3.3.跟跟0 0异或异或 如:如:XOR ALXOR AL,0 0 4.4.和和0 0加减加减 如:如:ADD ALADD AL,0 0 5.5.移位或循环移位移位或
12、循环移位 如:如:SHL ALSHL AL,1 12.2.根据状态标志位,选择合理的转移指令。根据状态标志位,选择合理的转移指令。方法方法1 1,3 3,4 4选选JSJS指令;方法指令;方法2 2选选JNZJNZ指令,方法指令,方法5 5选选JCJC指令指令1.1.设计运算,产生状态标志位设计运算,产生状态标志位第第4 4章汇编语言程序设计基本方法章汇编语言程序设计基本方法18 18 二月二月 2023 202310 104.3.1 4.3.1 控制类转移指令控制类转移指令1.1.条件转移指令条件转移指令条条件件转转移移指指令令简单条件转移指令:判断简单条件转移指令:判断单个标志位单个标志位
13、决定是否转移决定是否转移无符号条件转移指令:判断无符号条件转移指令:判断多个标志位多个标志位决定是否转移决定是否转移有符号条件转移指令:判断有符号条件转移指令:判断多个标志位多个标志位决定是否转移决定是否转移指令格式:指令格式:JXX JXX 标号标号指令功能:指令功能:使使CPUCPU根据状态标志位判断是转移到根据状态标志位判断是转移到标号处还是顺序执行。转移范围标号处还是顺序执行。转移范围-128-128 +127+127第第4 4章汇编语言程序设计基本方法章汇编语言程序设计基本方法18 18 二月二月 2023 202311 11(1)(1)简单条件转移指令简单条件转移指令第第4 4章汇
14、编语言程序设计基本方法章汇编语言程序设计基本方法18 18 二月二月 2023 202312 12【例题例题4.74.7】分析下列程序段,指出程序运行后,变量分析下列程序段,指出程序运行后,变量Y Y中的中的内容是什么。其中内容是什么。其中X X、Y Y均是字变量,均是字变量,X X之中存放有符号数之中存放有符号数x x。:MOV YMOV Y,-1-1 MOV AX MOV AX,X X CMP AX CMP AX,0 0 JE EXIT1JE EXIT1 ADD AX ADD AX,1000H1000H JO OVERFLOWJO OVERFLOW JNS EXIT1 JNS EXIT1
15、NEG AX NEG AX EXIT1EXIT1:MOV YMOV Y,AXAXEXITEXIT:MOV AHMOV AH,4CH4CH INT 21H INT 21H OVERFLOWOVERFLOW:MOV AHMOV AH,4CH4CH INT 21H INT 21H(Y Y)=0 x=00 x=0时时-1 x7000-1 x7000时时|x+1000H|x+1000H|x0 x0且且x7000Hx7000H第第4 4章汇编语言程序设计基本方法章汇编语言程序设计基本方法18 18 二月二月 2023 202313 13【例题【例题4.84.8】编写程序:判断某个数是正数还是负数,若编写程
16、序:判断某个数是正数还是负数,若是正则打印是正则打印0 0信息,若是负数打印信息,若是负数打印1 1信息。信息。分析:分析:1.TEST 1.TEST(ANDAND、OROR)即即TEST ALTEST AL,ALAL 2.2.测试最高位是测试最高位是0/1 0/1 即即TEST ALTEST AL,80H80H 3.3.跟跟0 0异或异或 即即XOR ALXOR AL,0 0 4.4.和和0 0加减加减 即即ADD ALADD AL,0 0 5.5.移位或循环移位移位或循环移位 即即SHL ALSHL AL,1 1本题采用测试最高位是本题采用测试最高位是0/10/1,判断该数是正数还是负数。
17、判断该数是正数还是负数。程序代码:程序代码:第第4 4章汇编语言程序设计基本方法章汇编语言程序设计基本方法18 18 二月二月 2023 202314 14(2)(2)无符号数条件转移指令无符号数条件转移指令无符号数条件转移指令往往跟在无符号数条件转移指令往往跟在比较指令比较指令之后,根据运之后,根据运算算结果结果设置的设置的条件标志状态条件标志状态确定转移方向。这类指令将确定转移方向。这类指令将比较对比较对象象视为无符号数。根据不同状态,设置了视为无符号数。根据不同状态,设置了高于高于、高于或等于高于或等于、低于低于、低于或等于低于或等于4 4种指令种指令第第4 4章汇编语言程序设计基本方法
18、章汇编语言程序设计基本方法18 18 二月二月 2023 202315 15【例题【例题4.94.9】编写程序:若编写程序:若X X、Y Y是数据区中是数据区中1616位无符号数,位无符号数,求下列函数的功能。求下列函数的功能。X-100 X-100 当当100100X X6553565535 Y=2*X Y=2*X 当当 0 0X X100100 X X 当当 X=100 X=100分析:分析:数据段定义数据段定义X X、Y Y两个字变两个字变量并初始化量并初始化X X变量。取变量。取X X到到AXAX寄存器并判寄存器并判断,在不现范围,实现不同运算。实现断,在不现范围,实现不同运算。实现算
19、法流程图如右所示:算法流程图如右所示:程序代码:程序代码:第第4 4章汇编语言程序设计基本方法章汇编语言程序设计基本方法18 18 二月二月 2023 202316 16(3)(3)有符号数条件转移指令有符号数条件转移指令有符号数条件转移指令一般跟在有符号数条件转移指令一般跟在比较指令比较指令之后,根据运之后,根据运算算结果结果设置的设置的条件标志状态条件标志状态确定转移方向。这类指令将比较对确定转移方向。这类指令将比较对象视为象视为有符号数有符号数。根据不同状态,设置了。根据不同状态,设置了大于大于、大于或等于大于或等于、小于小于、小于或等于小于或等于4 4种指令种指令。第第4 4章汇编语言
20、程序设计基本方法章汇编语言程序设计基本方法18 18 二月二月 2023 202317 17有符号数和无符号数比较标准有符号数和无符号数比较标准有符号数比较标准有符号数比较标准无符号数比较标准无符号数比较标准【例题【例题4.104.10】分析程序:下分析程序:下列程序段执行后,实现什么功能?列程序段执行后,实现什么功能?MOV SI MOV SI,0 0NEXTNEXT:MOV WORD PTR SIMOV WORD PTR SI,0 0 ADD SI ADD SI,2 2 CMP SI CMP SI,0F000H0F000H JBE NEXT JBE NEXT 功能:功能:地址为地址为000
21、0H0000H到到F000HF000H的字单元的字单元置置0 0。第第4 4章汇编语言程序设计基本方法章汇编语言程序设计基本方法18 18 二月二月 2023 202318 182.2.无条件转移指令无条件转移指令无条件转移指令使无条件转移指令使IPIP无条件无条件地转移到指令中指明的目的地转移到指令中指明的目的地址处执行地址处执行。无条件转移指令和转移目的地址在同一段称。无条件转移指令和转移目的地址在同一段称段内段内转移转移;无条件转移指令和转移目的地址不在同一段称为;无条件转移指令和转移目的地址不在同一段称为段间转段间转移。寻址方式有:直接寻址,间接寻址。移。寻址方式有:直接寻址,间接寻址
22、。第第4 4章汇编语言程序设计基本方法章汇编语言程序设计基本方法18 18 二月二月 2023 202319 194.3.2 4.3.2 分支结构程序设计分支结构程序设计分支结构分为单分支结构(比较分支结构分为单分支结构(比较/测试)、双分支结构测试)、双分支结构(比较(比较/测试)和多分支结构(跳转表)。它们都是实现转移,测试)和多分支结构(跳转表)。它们都是实现转移,但是汇编语言没有提供转移语句,转移过程需要编程者运用条但是汇编语言没有提供转移语句,转移过程需要编程者运用条件转移指令来件转移指令来构造构造。在汇编语言的分支结构程序设计中,一般是先使用算术在汇编语言的分支结构程序设计中,一般
23、是先使用算术运算指令、比较指令、逻辑运算指令或测试指令等,根据运算运算指令、比较指令、逻辑运算指令或测试指令等,根据运算结果在标志寄存器中设置相应的结果在标志寄存器中设置相应的状态标志位状态标志位,再使用相应的,再使用相应的条条件转移指令件转移指令。第第4 4章汇编语言程序设计基本方法章汇编语言程序设计基本方法18 18 二月二月 2023 20232020分支结构程序设计步骤分支结构程序设计步骤分分支支结结构构程程序序设设计计步步骤骤1.1.通过运算产生条件通过运算产生条件:设置状态标志位值:设置状态标志位值2.2.选择合适的转移指令选择合适的转移指令:是分支设计正确与否的关键:是分支设计正
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 程序设计
限制150内