《最新微机原理05PPT课件.ppt》由会员分享,可在线阅读,更多相关《最新微机原理05PPT课件.ppt(104页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、微机原理微机原理05钱晓捷,微型计算机原理及应用钱晓捷,微型计算机原理及应用2 2版,清华大学出版社,版,清华大学出版社,201020102第5章 控制转移和程序结构5.1 5.1 目标地址寻址方式目标地址寻址方式5.1.1 5.1.1 转移范围转移范围5.1.2 5.1.2 寻址方式寻址方式5.1.3 5.1.3 无条件转移指令无条件转移指令5.2 5.2 分支程序结构分支程序结构5.2.1 5.2.1 条件转移指令条件转移指令5.2.2 5.2.2 单分支结构单分支结构5.2.3 5.2.3 双分支结构双分支结构5.2.4 5.2.4 多分支结构多分支结构5.3 5.3 循环程序结构循环程
2、序结构5.3.1 5.3.1 循环指令循环指令5.3.2 5.3.2 计数控制循环计数控制循环5.3.3 5.3.3 条件控制循环条件控制循环5.4 5.4 子程序结构子程序结构5.4.1 5.4.1 子程序指令子程序指令5.4.2 5.4.2 子程序设计子程序设计5.4.3 5.4.3 参数传递参数传递5.4.4 5.4.4 程序模块程序模块钱晓捷,微型计算机原理及应用钱晓捷,微型计算机原理及应用2 2版,清华大学出版社,版,清华大学出版社,201020103钱晓捷,微型计算机原理及应用钱晓捷,微型计算机原理及应用2 2版,清华大学出版社,版,清华大学出版社,201020104钱晓捷,微型计
3、算机原理及应用钱晓捷,微型计算机原理及应用2 2版,清华大学出版社,版,清华大学出版社,201020105钱晓捷,微型计算机原理及应用钱晓捷,微型计算机原理及应用2 2版,清华大学出版社,版,清华大学出版社,201020106钱晓捷,微型计算机原理及应用钱晓捷,微型计算机原理及应用2 2版,清华大学出版社,版,清华大学出版社,201020107钱晓捷,微型计算机原理及应用钱晓捷,微型计算机原理及应用2 2版,清华大学出版社,版,清华大学出版社,201020108钱晓捷,微型计算机原理及应用钱晓捷,微型计算机原理及应用2 2版,清华大学出版社,版,清华大学出版社,201020109例题5-1无条
4、件转移程序-2;数据段数据段00020002 00000000 00000000fvarfvardd?dd?;代码段代码段002B002B B8 FF05 B8 FF05labl4:labl4:mov ax,type far ptr labl5mov ax,type far ptr labl5002E002E EA-0034 R EA-0034 Rjmpjmp far ptr labl5far ptr labl500330033 90 90nopnop00340034 B8 0047 R B8 0047 Rlabl5:labl5:mov ax,offset labl6mov ax,offset
5、 labl600370037 A3 0002 R A3 0002 Rmov word ptr fvar,axmov word ptr fvar,ax003A003A BA-R BA-Rmov dx,seg labl6mov dx,seg labl6003D003D 89 16 0004 R 89 16 0004 R mov word ptr fvar+2,dxmov word ptr fvar+2,dx00410041 FF 2E 0002 R FF 2E 0002 R jmpjmp fvarfvar00450045 90 90nopnop00460046labl6:labl6:存储器间接远转
6、移存储器间接远转移直接远转移直接远转移调试调试钱晓捷,微型计算机原理及应用钱晓捷,微型计算机原理及应用2 2版,清华大学出版社,版,清华大学出版社,2010201010条件转移指令Jccl根据指定的条件确定程序是否发生转移根据指定的条件确定程序是否发生转移Jcc labelJcc label;条件满足,发生转移;否则,顺序执行下一条指令条件满足,发生转移;否则,顺序执行下一条指令lLABELLABEL表示目标地址,采用段内相对寻址方式表示目标地址,采用段内相对寻址方式1616位位80 x8680 x86微处理器:只是微处理器:只是-128-128+127+127间的短转移间的短转移3232位位
7、IA-32IA-32微处理器:达到微处理器:达到3232位的全偏移量位的全偏移量l条件转移指令不影响标志,但要利用标志条件转移指令不影响标志,但要利用标志lcccc表示利用标志判断的条件,表示利用标志判断的条件,1616种、两类种、两类单个标志状态作为条件单个标志状态作为条件两数大小关系作为条件两数大小关系作为条件钱晓捷,微型计算机原理及应用钱晓捷,微型计算机原理及应用2 2版,清华大学出版社,版,清华大学出版社,2010201011转移条件cc:单个标志状态JZ/JEJZ/JEZF=1ZF=1 Jump if Zero/EqualJump if Zero/EqualJNZ/JNEJNZ/JN
8、EZF=0ZF=0 Jump if Not Zero/Not EqualJump if Not Zero/Not EqualJSJSSF=1SF=1 Jump if SignJump if SignJNSJNSSF=0SF=0 Jump if Not SignJump if Not SignJP/JPEJP/JPEPF=1PF=1 Jump if Parity/Parity EvenJump if Parity/Parity EvenJNP/JPOJNP/JPOPF=0PF=0 Jump if Not Parity/Parity OddJump if Not Parity/Parity Odd
9、JOJOOF=1OF=1 Jump if OverflowJump if OverflowJNOJNOOF=0OF=0 Jump if Not OverflowJump if Not OverflowJCJCCF=1CF=1 Jump if CarryJump if CarryJNCJNCCF=0CF=0 Jump if Not CarryJump if Not Carry钱晓捷,微型计算机原理及应用钱晓捷,微型计算机原理及应用2 2版,清华大学出版社,版,清华大学出版社,2010201012转移条件cc:两数大小关系JB/JNAEJB/JNAECF=1CF=1Jump if Below/No
10、t Above or EqualJump if Below/Not Above or EqualJNB/JAEJNB/JAECF=0CF=0Jump if Not Below/Above or EqualJump if Not Below/Above or EqualJBE/JNAJBE/JNACF=1CF=1或或ZF=1ZF=1Jump if Below/Not AboveJump if Below/Not AboveJNBE/JAJNBE/JACF=0CF=0且且ZF=0ZF=0Jump if Not Below or Equal/AboveJump if Not Below or Equ
11、al/AboveJL/JNGEJL/JNGESFOFSFOFJump Jump if if Less/Not Less/Not Greater Greater or or EqualEqualJNL/JGEJNL/JGESF=OFSF=OF Jump if Not Less/Greater or EqualJump if Not Less/Greater or EqualJLE/JNGJLE/JNGZFOFZFOF或或ZF=1ZF=1Jump Jump if if Less Less or or Equal/Not Equal/Not GreaterGreaterJNLE/JGJNLE/JGS
12、F=OFSF=OF且且 ZF=0ZF=0 Jump Jump if if Not Not Less Less or or Equal/GreaterEqual/Greater多个助记符方便记忆多个助记符方便记忆钱晓捷,微型计算机原理及应用钱晓捷,微型计算机原理及应用2 2版,清华大学出版社,版,清华大学出版社,2010201013单个标志状态作为条件lJZ(JE)JZ(JE)和和JNZ(JNE)JNZ(JNE):利用零位标志:利用零位标志ZFZF判断结果是零(相等)还是非零(不等)判断结果是零(相等)还是非零(不等)lJSJS和和JNSJNS:利用符号标志:利用符号标志SFSF判断结果是负还是
13、正判断结果是负还是正lJOJO和和JNOJNO:利用溢出标志:利用溢出标志OFOF判断结果是溢出还是没有溢出判断结果是溢出还是没有溢出lJP(JPE)JP(JPE)和和JNP(JPO)JNP(JPO):利用奇偶标志:利用奇偶标志PFPF判断结果低字节判断结果低字节“1”1”的个数是偶数还是奇数的个数是偶数还是奇数lJCJC和和JNCJNC:利用进位标志:利用进位标志CFCF判断结果是有进位(为判断结果是有进位(为1 1)还是无进位(为)还是无进位(为0 0)钱晓捷,微型计算机原理及应用钱晓捷,微型计算机原理及应用2 2版,清华大学出版社,版,清华大学出版社,2010201014例题5-2实现指
14、令CBW功能的程序-1l80868086指令指令CBWCBW(等于(等于IA-32IA-32指令指令MOVSX AX,ALMOVSX AX,AL)如果如果ALAL最高位为最高位为0 0,则设置,则设置AHAH0 0如果如果ALAL最高位为最高位为1 1,则设置,则设置AHAHFFHFFHl如何判断如何判断ALAL最高位是最高位是“0”0”,还是,还是“1”1”涉及一个位,可采用位操作类指令涉及一个位,可采用位操作类指令保留最高位不变,其他位变成保留最高位不变,其他位变成0 0逻辑与逻辑与“80H”80H”结果为结果为0 0,ALAL最高位最高位0 0;否则是;否则是1 1运算结果是否为运算结果
15、是否为0 0,零位标志,零位标志ZFZF反映反映JZJZ或或JNZJNZ指令判断并转移指令判断并转移演示演示TEST指令生成条件指令生成条件钱晓捷,微型计算机原理及应用钱晓捷,微型计算机原理及应用2 2版,清华大学出版社,版,清华大学出版社,2010201015例题5-2实现指令CBW功能的程序-2mov al,bvarmov al,bvar;取出要判断的数据取出要判断的数据test al,80htest al,80h;测试最高位测试最高位jzjz next1 next1;最高位为最高位为0 0(ZFZF1 1),转移到标号),转移到标号NEXT1NEXT1mov ah,0ffhmov ah,
16、0ffh;最高位为最高位为1 1,顺序执行:设置,顺序执行:设置AHAHFFHFFHjmpjmp done done;无条件跳过另一个分支无条件跳过另一个分支next1:next1:mov ah,0mov ah,0;最高位为最高位为0 0转移到此执行:设置转移到此执行:设置AHAH0 0done:done:等于零转移等于零转移钱晓捷,微型计算机原理及应用钱晓捷,微型计算机原理及应用2 2版,清华大学出版社,版,清华大学出版社,2010201016例题5-2实现指令CBW功能的程序-3mov al,bvarmov al,bvar;取出要判断的数据取出要判断的数据test al,80htest a
17、l,80h;测试最高位测试最高位jnzjnz next2 next2;最高位为最高位为1 1(ZFZF0 0),转移到标号),转移到标号NEXT2NEXT2mov ah,0mov ah,0;最高位为最高位为0 0,顺序执行:设置,顺序执行:设置AHAH00H00Hjmpjmp done done;无条件跳过另一个分支无条件跳过另一个分支next2:next2:mov ah,0ffhmov ah,0ffh;最高位为最高位为1 1转移到此执行:设置转移到此执行:设置AHAHFFHFFHdone:done:不等于零转移不等于零转移钱晓捷,微型计算机原理及应用钱晓捷,微型计算机原理及应用2 2版,清华
18、大学出版社,版,清华大学出版社,2010201017例题5-2实现指令CBW功能的程序-4mov al,bvarmov al,bvar;取出要判断的数据取出要判断的数据cmp al,0cmp al,0;与与0 0比较比较jnsjns next3 next3;最高位为最高位为0 0(SFSF0 0),转移到标号),转移到标号NEXT3NEXT3mov ah,0ffhmov ah,0ffh;最高位为最高位为1 1,顺序执行:设置,顺序执行:设置AHAHFFHFFHjmpjmp done done;无条件跳过另一个分支无条件跳过另一个分支next3:next3:mov ah,0mov ah,0;最高
19、位为最高位为0 0转移到此执行:设置转移到此执行:设置AHAH00H00Hdone:done:符号为正转移符号为正转移钱晓捷,微型计算机原理及应用钱晓捷,微型计算机原理及应用2 2版,清华大学出版社,版,清华大学出版社,2010201018例题5-3实现奇偶校验程序-1l奇奇偶偶校校验验是是数数据据通通信信、存存储储等等过过程程中中最最常常用用的的校验方法校验方法l奇奇校校验验:使使包包括括校校验验位位在在内内的的数数据据中中为为“1”1”的个数恒为奇数的个数恒为奇数l偶偶校校验验:使使包包括括校校验验位位在在内内的的数数据据中中为为“1”1”的个数恒为偶数(包括的个数恒为偶数(包括0 0)l
20、奇奇偶偶校校验验只只能能检检测测出出奇奇数数个个位位出出错错的的情情况况,不不能纠错能纠错l实现奇偶校验非常简单实现奇偶校验非常简单硬件上使用异或等电路硬件上使用异或等电路软件上使用异或等指令,奇偶校验标志软件上使用异或等指令,奇偶校验标志PFPF钱晓捷,微型计算机原理及应用钱晓捷,微型计算机原理及应用2 2版,清华大学出版社,版,清华大学出版社,2010201019例题5-3实现奇偶校验程序-2mov ah,1mov ah,1;1;1号功能号功能int 21hint 21h;键盘输入,返回值在键盘输入,返回值在ALALand al,7fhand al,7fh;最高位置最高位置“0”0”,标志
21、,标志PFPF反映反映“1”1”的个数的个数jnpjnp next1next1;个数为奇数,则转向个数为奇数,则转向NEXT1NEXT1or al,80hor al,80h;最高位置最高位置“1”1”、其他位不变、其他位不变 next1:next1:mov Tdata,almov Tdata,al;保存待发送的数据保存待发送的数据功能编号功能编号 AHAH01H01H出口参数出口参数 ALALASCIIASCII字符字符功能说明功能说明 键盘输入一个字符(回显)键盘输入一个字符(回显)个数为奇数转移个数为奇数转移钱晓捷,微型计算机原理及应用钱晓捷,微型计算机原理及应用2 2版,清华大学出版社,
22、版,清华大学出版社,2010201020例题5-3实现奇偶校验程序-3mov ah,1mov ah,1;1;1号功能号功能int 21hint 21h;键盘输入,返回值在键盘输入,返回值在ALALand al,7fhand al,7fh;最高位置最高位置“0”0”,标志,标志PFPF反映反映“1”1”的个数的个数jpjp next2next2;个数为偶数,转向个数为偶数,转向NEXT2NEXT2jmpjmp donedone;个数为奇数,转向保存个数为奇数,转向保存next2:next2:or al,80hor al,80h;最高位置最高位置“1”1”、其他位不变、其他位不变 done:don
23、e:mov Tdata,almov Tdata,al;保存待发送的数据保存待发送的数据个数为偶数转移个数为偶数转移何不合二为一何不合二为一jnpdone钱晓捷,微型计算机原理及应用钱晓捷,微型计算机原理及应用2 2版,清华大学出版社,版,清华大学出版社,2010201021例题5-4统计“1”位个数程序-1mov ah,1mov ah,1int 21hint 21h;输入一个字符输入一个字符xor ah,ahxor ah,ah;用用AHAH寄存器记录寄存器记录1 1的个数,故先清的个数,故先清0 0mov ecx,8mov ecx,8;ASCII;ASCII码有码有8 8位,进行位,进行8 8
24、次循环判断次循环判断again:again:shl al,1shl al,1;从高位开始从高位开始jncjnc next next;不为不为1 1,无需处理,无需处理inc ahinc ah;为为1 1,个数加,个数加1 1next:next:loop againloop again钱晓捷,微型计算机原理及应用钱晓捷,微型计算机原理及应用2 2版,清华大学出版社,版,清华大学出版社,2010201022例题5-4统计“1”位个数程序-2mov ah,1mov ah,1int 21hint 21h;输入一个字符输入一个字符xor ah,ahxor ah,ah;用用AHAH寄存器记录寄存器记录1
25、1的个数,故先清的个数,故先清0 0again:again:cmp al,0cmp al,0;也可用也可用“TEST AL,0FFH”TEST AL,0FFH”jeje done doneshr al,1shr al,1;从低位开始从低位开始jncjnc next next;不为不为1 1,无须处理,无须处理inc ahinc ah;为为1 1,个数加,个数加1 1next:next:jmp againjmp againdone:done:好在哪里好在哪里?钱晓捷,微型计算机原理及应用钱晓捷,微型计算机原理及应用2 2版,清华大学出版社,版,清华大学出版社,2010201023两数大小关系作为
26、条件l无符号数用高(无符号数用高(AboveAbove)、低()、低(BelowBelow)低于(不高于等于):低于(不高于等于):JBJB(JNAEJNAE)不低于(高于等于):不低于(高于等于):JNBJNB(JAEJAE)低于等于(不高于):低于等于(不高于):JBEJBE(JNAJNA)不低于等于(高于):不低于等于(高于):JNBEJNBE(JAJA)l有符号数用大(有符号数用大(GreaterGreater)、小()、小(LessLess)小于(不大于等于):小于(不大于等于):JLJL(JNGEJNGE)不小于(大于等于):不小于(大于等于):JNLJNL(JGEJGE)小于等于
27、(不大于):小于等于(不大于):JLEJLE(JNGJNG)不小于等于(大于):不小于等于(大于):JNLEJNLE(JGJG)钱晓捷,微型计算机原理及应用钱晓捷,微型计算机原理及应用2 2版,清华大学出版社,版,清华大学出版社,2010201024例题5-5比较两数大小程序mov ax,wvar1mov ax,wvar1;取第一个数据取第一个数据cmp ax,wvar2cmp ax,wvar2;与第二个数据比较与第二个数据比较jeje equalequal;两数相等,转移两数相等,转移jnbjnb firstfirst;第一个数据大,转移第一个数据大,转移mov dx,offset msg2
28、mov dx,offset msg2;第二个数据大第二个数据大jmpjmp donedonefirst:first:mov dx,offset msg1mov dx,offset msg1jmpjmp donedoneequal:equal:mov dx,offset msg0mov dx,offset msg0done:done:mov ah,9mov ah,9;显示结果显示结果int 21hint 21h无符号数无符号数有符号数有符号数钱晓捷,微型计算机原理及应用钱晓捷,微型计算机原理及应用2 2版,清华大学出版社,版,清华大学出版社,2010201025例题5-6求绝对值程序;数据段数据
29、段dvardvardd 0bd630422hdd 0bd630422h;有符号数据有符号数据resultresultdd?dd?;保存绝对值保存绝对值;代码段代码段mov eax,dvarmov eax,dvarcmp eax,0cmp eax,0;比较比较EAXEAX与与0 0jge nonnegjge nonneg;条件满足:条件满足:EAX0EAX0,转移,转移neg eaxneg eax;条件不满足:条件不满足:EAXEAX0 0,为负数,求补得正值,为负数,求补得正值nonnegnonneg:mov result,eaxmov result,eax;分支结束,保存结果分支结束,保存结
30、果单分支单分支IF-THEN结构结构演示演示钱晓捷,微型计算机原理及应用钱晓捷,微型计算机原理及应用2 2版,清华大学出版社,版,清华大学出版社,2010201026例题5-7BCD码显示程序mov dl,BCDmov dl,BCD;取取BCDBCD码码test dl,0f0htest dl,0f0h;如果高位是如果高位是0 0,不显示,不显示jz onejz oneshr dl,4shr dl,4;BCD;BCD码高位右移为低位码高位右移为低位or dl,30hor dl,30h;转换为转换为ASCIIASCII码码mov ah,2mov ah,2;显示显示int 21hint 21hmov
31、 dl,BCDmov dl,BCD;取取BCDBCD码码and dl,0fhand dl,0fh;只取二进制低只取二进制低4 4位位one:one:or dl,30hor dl,30h;转换低位为转换低位为ASCIIASCII码码mov ah,2mov ah,2;显示显示int 21hint 21hadd dl,30hadd dl,30h钱晓捷,微型计算机原理及应用钱晓捷,微型计算机原理及应用2 2版,清华大学出版社,版,清华大学出版社,2010201027例题5-8显示数据最高位程序-1;数据段数据段dvardvardd 0bd630422hdd 0bd630422h;有符号数据有符号数据;
32、代码段代码段mov ebx,dvarmov ebx,dvarshl ebx,1shl ebx,1;EBX;EBX最高位移入最高位移入CFCF标志标志jc onejc one;CF;CF1 1,最高位为,最高位为1 1,转移,转移mov dl,0mov dl,0;CF;CF0 0,最高位为,最高位为0 0:DL0DL0jmp twojmp two;一定要跳过另一个分支体一定要跳过另一个分支体one:one:mov dl,1mov dl,1;DL1;DL1two:two:mov ah,2mov ah,2int 21hint 21h;显示显示双双分支分支IF-THEN-ELSE结构结构演示演示钱晓捷
33、,微型计算机原理及应用钱晓捷,微型计算机原理及应用2 2版,清华大学出版社,版,清华大学出版社,2010201028例题5-8显示数据最高位程序-2;数据段数据段dvardvardd 0bd630422hdd 0bd630422h;有符号数据有符号数据;代码段代码段mov ebx,dvarmov ebx,dvarmov dl,0mov dl,0;假设最高位为假设最高位为0 0:DL0DL0shl ebx,1shl ebx,1;EBX;EBX最最 高高 位位 移移 入入 CFCF标标 志志jnc twojnc two;CF;CF0 0,即最高位为,即最高位为0 0、与假设相同,转移、与假设相同,
34、转移mov dl,1mov dl,1;CF;CF1 1,最高位为,最高位为1 1,DL1DL1two:two:mov ah,2mov ah,2int 21hint 21h;显示显示IF-THEN结构结构钱晓捷,微型计算机原理及应用钱晓捷,微型计算机原理及应用2 2版,清华大学出版社,版,清华大学出版社,2010201029例题5-8显示数据最高位程序-3;数据段数据段dvardvardd 0bd630422hdd 0bd630422h;有符号数据有符号数据;代码段代码段mov ebx,dvarmov ebx,dvarmov dl,0mov dl,0shl ebx,1shl ebx,1;EBX;
35、EBX最高位移入最高位移入CFCF标志标志adc dl,0adc dl,0;最高位为最高位为0 0,CFCF0 0,DL0DL0000 0;最高位为最高位为1 1,CFCF1 1,DL1DL1001 1mov ah,2mov ah,2;显示显示int 21hint 21h顺序结构顺序结构钱晓捷,微型计算机原理及应用钱晓捷,微型计算机原理及应用2 2版,清华大学出版社,版,清华大学出版社,2010201030例题5-9有符号数运算溢出程序;代码段代码段mov eax,dvar1 mov eax,dvar1 sub eax,dvar2sub eax,dvar2;求差求差jo errorjo err
36、or;有溢出,转移有溢出,转移mov dvar3,eaxmov dvar3,eax;无溢出,保存差值无溢出,保存差值lea dx,okmsglea dx,okmsg;显示正确显示正确jmp dispjmp disperror:error:lea dx,errmsglea dx,errmsg;显示错误显示错误disp:disp:mov ah,9mov ah,9int 21hint 21h钱晓捷,微型计算机原理及应用钱晓捷,微型计算机原理及应用2 2版,清华大学出版社,版,清华大学出版社,2010201031分支程序结构l单分支程序结构单分支程序结构选选好好条条件件转转移移指指令令:当当条条件件满
37、满足足,发发生生转转移移,跳跳过过分支体;条件不满足,顺序执行分支体分支体;条件不满足,顺序执行分支体l双分支程序结构双分支程序结构顺序执行的分支体要有顺序执行的分支体要有JMPJMP指令跳过另一个分支体指令跳过另一个分支体l多分支结构多分支结构分支处理中又有分支,具有多个分支走向分支处理中又有分支,具有多个分支走向可用单分支和双分支实现多个分支结构可用单分支和双分支实现多个分支结构or ah,ahor ah,ahjz function0jz function0dec ahdec ahjz function1jz function1AH=0fuction0YNAH=1fuction1YNAH=
38、2fuction2YN钱晓捷,微型计算机原理及应用钱晓捷,微型计算机原理及应用2 2版,清华大学出版社,版,清华大学出版社,2010201032例题5-10利用地址表实现多分支程序-1;数据段数据段msgmsgdb Input number(19):,$db Input number(19):,$crlfcrlfdb 0dh,0ah,$db 0dh,0ah,$msg1msg1db Chapter 1,0dh,0ah,$db Chapter 1,0dh,0ah,$msg9msg9db Chapter 9,0dh,0ah,$db Chapter 9,0dh,0ah,$tabletabledw di
39、sp1,disp2,disp3,disp4,disp5dw disp1,disp2,disp3,disp4,disp5dw disp6,disp7,disp8,disp9dw disp6,disp7,disp8,disp9;入口地址表入口地址表地址表地址表分支分支1地址地址分支分支2地址地址标号偏移地址标号偏移地址offsetdisp1演示演示钱晓捷,微型计算机原理及应用钱晓捷,微型计算机原理及应用2 2版,清华大学出版社,版,清华大学出版社,2010201033例题5-10利用地址表实现多分支程序-2;代码段代码段start1:start1:mov dx,offset msgmov dx,o
40、ffset msg;提示输入数字提示输入数字mov ah,9mov ah,9int 21hint 21hmov ah,1mov ah,1;等待按键等待按键int 21hint 21hpush axpush axmov dx,offset crlfmov dx,offset crlf;回车换行回车换行mov ah,9mov ah,9int 21hint 21hpop axpop ax;AL;AL数字的数字的ASCIIASCII码码演示演示钱晓捷,微型计算机原理及应用钱晓捷,微型计算机原理及应用2 2版,清华大学出版社,版,清华大学出版社,2010201034例题5-10利用地址表实现多分支程序-
41、3cmp al,1cmp al,1;数字数字 1 9 9?ja start1ja start1and ax,000fhand ax,000fh;ASCII;ASCII码转换成数字码转换成数字dec axdec axshl ax,1shl ax,1;乘以乘以2 2mov bx,axmov bx,axjmp tablebxjmp tablebx;段内存储器间接转移:段内存储器间接转移:IPTABLEIPTABLEBXBXdisp1:disp1:mov dx,offset msg1mov dx,offset msg1;分支程序分支程序1 1jmp start2jmp start2演示演示钱晓捷,微型
42、计算机原理及应用钱晓捷,微型计算机原理及应用2 2版,清华大学出版社,版,清华大学出版社,2010201035例题5-10利用地址表实现多分支程序-4jmp tablebxjmp tablebx;IPTABLE;IPTABLEBXBX;地址寻址方式:存储器间接转移地址寻址方式:存储器间接转移;数据寻址方式:数据寻址方式:寄存器相对寻址寄存器相对寻址mov ax,offset tablemov ax,offset tableadd bx,axadd bx,axjmp word ptrbxjmp word ptrbx;IPBX;IPBX;数据寻址方式:数据寻址方式:寄存器间接寻址寄存器间接寻址mo
43、v ax,bxmov ax,bxjmp axjmp ax;IPAX;IPAX;数据寻址方式:数据寻址方式:寄存器寻址寄存器寻址演示演示钱晓捷,微型计算机原理及应用钱晓捷,微型计算机原理及应用2 2版,清华大学出版社,版,清华大学出版社,2010201036循环程序结构循环的初始状态循环的初始状态循环的工作部分循环的工作部分及修改部分及修改部分计数控制循环计数控制循环条件控制循环条件控制循环初始化初始化循环体循环体修改部分修改部分Y YN N控制条件控制条件钱晓捷,微型计算机原理及应用钱晓捷,微型计算机原理及应用2 2版,清华大学出版社,版,清华大学出版社,2010201037循环控制l计数控制
44、循环计数控制循环通过次数控制循环,常用通过次数控制循环,常用LOOPLOOP指令实现指令实现l条件控制循环条件控制循环根据条件决定是否进行循环,需用条件转移指令根据条件决定是否进行循环,需用条件转移指令l“先判断、后循环先判断、后循环”的循环程序结构的循环程序结构循环控制在进入循环之前进行循环控制在进入循环之前进行l“先循环、后判断先循环、后判断”的循环程序结构的循环程序结构循环之后进行循环条件判断循环之后进行循环条件判断示意图示意图钱晓捷,微型计算机原理及应用钱晓捷,微型计算机原理及应用2 2版,清华大学出版社,版,清华大学出版社,2010201038循环指令LOOP labelLOOP l
45、abel;ECXECX;ECXECX1 1;若;若ECX0ECX0,循环到,循环到LABELLABEL;;否则,顺序执行否则,顺序执行JECXZ labelJECXZ label;ECX;ECX0 0,转移;否则顺序执行,转移;否则顺序执行JCXZ labelJCXZ label;CX;CX0 0,转移;否则顺序执行,转移;否则顺序执行l3232位段使用位段使用ECXECX(1616位段使用位段使用CXCX)作为计数器)作为计数器l目标地址采用相对短转移目标地址采用相对短转移DEC ECXDEC ECXJNZ labelJNZ label钱晓捷,微型计算机原理及应用钱晓捷,微型计算机原理及应用
46、2 2版,清华大学出版社,版,清华大学出版社,2010201039例题5-11数组求和程序-1mov ecx,lengthof arraymov ecx,lengthof arrayxor eax,eaxxor eax,eax;求和初值为求和初值为0 0mov ebx,eaxmov ebx,eax;数组指针为数组指针为0 0again:again:movzx edx,arrayebx*(type array)movzx edx,arrayebx*(type array)add eax,edxadd eax,edx;求和求和 inc ebxinc ebxloop againloop againm
47、ov sum,eaxmov sum,eax;保存结果保存结果循环初始循环初始循环体循环体循环控制循环控制演示演示钱晓捷,微型计算机原理及应用钱晓捷,微型计算机原理及应用2 2版,清华大学出版社,版,清华大学出版社,2010201040例题5-11数组求和程序-2mov ecx,lengthof arraymov ecx,lengthof arrayxor eax,eaxxor eax,eax;求和初值为求和初值为0 0jecxz donejecxz done;数组元素为数组元素为0 0,不,不再进行求和再进行求和mov ebx,eaxmov ebx,eax;数组指针为数组指针为0 0again
48、:again:movzx edx,arrayebx*(type array)movzx edx,arrayebx*(type array)add eax,edxadd eax,edx;求和求和 inc ebxinc ebxloop againloop againdone:done:mov sum,eaxmov sum,eax;保存结果保存结果钱晓捷,微型计算机原理及应用钱晓捷,微型计算机原理及应用2 2版,清华大学出版社,版,清华大学出版社,2010201041字符串输入功能功能编号功能编号 AHAH0AH0AH入口参数入口参数 DSDXDSDX键盘输入缓冲区逻辑地址键盘输入缓冲区逻辑地址(段
49、地址(段地址偏移地址)偏移地址)功能说明功能说明 读读取取从从键键盘盘输输入入的的一一个个字字符符串串(有有回回显显),直到按下回车键。直到按下回车键。键键盘盘输输入入缓缓冲冲区区的的第第1 1个个字字节节是是缓缓冲冲区区字字节节大大小小(最最大大为为255255),第第2 2个个字字节节在在调调用用结结束束时时被被功功能能调调用用填填进进输输入入的的字字符符个个数数,第第3 3个个字字节节开开始始存存放放输输入入字字符符的的ASCIIASCII码码,最最后后是回车字符(是回车字符(0DH0DH)。)。钱晓捷,微型计算机原理及应用钱晓捷,微型计算机原理及应用2 2版,清华大学出版社,版,清华大
50、学出版社,2010201042例题5-12输入字符串大小写转换程序-1;数据段数据段keynumkeynum=255=255keybufkeybufdb keynumdb keynum;键盘输入缓冲区键盘输入缓冲区db 0db 0db keynum dup(0)db keynum dup(0);代码段代码段mov dx,offset keybufmov dx,offset keybuf;设置入口参数设置入口参数DXDXmov ah,0ahmov ah,0ahint 21hint 21h;用户用回车键结束用户用回车键结束mov dl,0ahmov dl,0ah;回车后再进行换行回车后再进行换行m