《最新微机应用05PPT课件.ppt》由会员分享,可在线阅读,更多相关《最新微机应用05PPT课件.ppt(97页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、微机应用微机应用0505钱晓捷,微型计算机原理及应用,清华大学出版社,钱晓捷,微型计算机原理及应用,清华大学出版社,200620062第5章 控制转移和程序结构5.1 5.1 目标地址寻址方式目标地址寻址方式5.1.15.1.1转移范围转移范围5.1.25.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 循环程序结构循环程序结构5.3.
2、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 程序模块程序模块钱晓捷,微型计算机原理及应用,清华大学出版社,钱晓捷,微型计算机原理及应用,清华大学出版社,200620063钱晓捷,微型计算机原理及应用,清华大学出版社,钱晓捷,微型计算机原理及应用,清华大学出版社,200620064钱晓捷,微型计算机原理及应用,清华大学出版社,钱
3、晓捷,微型计算机原理及应用,清华大学出版社,200620065钱晓捷,微型计算机原理及应用,清华大学出版社,钱晓捷,微型计算机原理及应用,清华大学出版社,200620066钱晓捷,微型计算机原理及应用,清华大学出版社,钱晓捷,微型计算机原理及应用,清华大学出版社,200620067钱晓捷,微型计算机原理及应用,清华大学出版社,钱晓捷,微型计算机原理及应用,清华大学出版社,200620068钱晓捷,微型计算机原理及应用,清华大学出版社,钱晓捷,微型计算机原理及应用,清华大学出版社,200620069例题5-1无条件转移程序-2;数据段数据段00020002 00000000 00000000fv
4、arfvardd?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 labl600370037 A3 0002 R A3 0002 Rmov word
5、 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、学出版社,钱晓捷,微型计算机原理及应用,清华大学出版社,2006200610条件转移指令Jccl根据指定的条件确定程序是否发生转移根据指定的条件确定程序是否发生转移Jcc labelJcc label;条件满足,发生转移;否则,顺序执行下一条指令条件满足,发生转移;否则,顺序执行下一条指令lLABELLABEL表示目标地址,采用段内相对寻址方式表示目标地址,采用段内相对寻址方式1616位位80 x8680 x86微处理器:只是微处理器:只是-128-128+127+127间的短转移间的短转移3232位位IA-32IA-32微处理器:达到微处理器:达到3232位的全偏移量位的全偏移量l条件转移指
7、令不影响标志,但要利用标志条件转移指令不影响标志,但要利用标志lcccc表示利用标志判断的条件,表示利用标志判断的条件,1616种、两类种、两类单个标志状态作为条件单个标志状态作为条件两数大小关系作为条件两数大小关系作为条件钱晓捷,微型计算机原理及应用,清华大学出版社,钱晓捷,微型计算机原理及应用,清华大学出版社,2006200611转移条件cc:单个标志状态JZ/JEJZ/JEZF=1ZF=1 Jump if Zero/EqualJump if Zero/EqualJNZ/JNEJNZ/JNEZF=0ZF=0 Jump if Not Zero/Not EqualJump if Not Zer
8、o/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 OddJOJOOF=1OF=1 Jump if OverflowJump if OverflowJNOJNO
9、OF=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钱晓捷,微型计算机原理及应用,清华大学出版社,钱晓捷,微型计算机原理及应用,清华大学出版社,2006200612转移条件cc:两数大小关系JB/JNAEJB/JNAECF=1CF=1Jump if Below/Not Above or EqualJump if Below/Not Above or EqualJNB/JAEJ
10、NB/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 Equal/AboveJL/JNGEJL/JNGESFOFSFOFJump Jump if if Less/Not L
11、ess/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/JGSF=OFSF=OF且且 ZF=0ZF=0 Jump Jump if if Not Not Less Less o
12、r or Equal/GreaterEqual/Greater多个助记符方便记忆多个助记符方便记忆钱晓捷,微型计算机原理及应用,清华大学出版社,钱晓捷,微型计算机原理及应用,清华大学出版社,2006200613单个标志状态作为条件lJZ(JE)JZ(JE)和和JNZ(JNE)JNZ(JNE):利用零位标志:利用零位标志ZFZF判断结果是零(相等)还是非零(不等)判断结果是零(相等)还是非零(不等)lJSJS和和JNSJNS:利用符号标志:利用符号标志SFSF判断结果是负还是正判断结果是负还是正lJOJO和和JNOJNO:利用溢出标志:利用溢出标志OFOF判断结果是溢出还是没有溢出判断结果是溢出
13、还是没有溢出lJP(JPE)JP(JPE)和和JNP(JPO)JNP(JPO):利用奇偶标志:利用奇偶标志PFPF判断结果低字节判断结果低字节“1”1”的个数是偶数还是奇数的个数是偶数还是奇数lJCJC和和JNCJNC:利用进位标志:利用进位标志CFCF判断结果是有进位(为判断结果是有进位(为1 1)还是无进位(为)还是无进位(为0 0)钱晓捷,微型计算机原理及应用,清华大学出版社,钱晓捷,微型计算机原理及应用,清华大学出版社,2006200614例题5-2实现指令CBW功能的程序-1l80868086指令指令CBWCBW(等于(等于IA-32IA-32指令指令MOVSX AX,ALMOVSX
14、 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运算结果是否为运算结果是否为0 0,零位标志,零位标志ZFZF反映反映JZJZ或或JNZJNZ指令判断并转移指令判断并转移演示演示TEST指令生成条件指令
15、生成条件钱晓捷,微型计算机原理及应用,清华大学出版社,钱晓捷,微型计算机原理及应用,清华大学出版社,2006200615例题5-2实现指令CBW功能的程序-2mov al,bvarmov al,bvar;取出要判断的数据取出要判断的数据test al,80htest al,80h;测试最高位测试最高位jzjz next1 next1;最高位为最高位为0 0(ZFZF1 1),转移到标号),转移到标号NEXT1NEXT1mov ah,0ffhmov ah,0ffh;最高位为最高位为1 1,顺序执行:设置,顺序执行:设置AHAHFFHFFHjmpjmp done done;无条件跳过另一个分支无条
16、件跳过另一个分支next1:next1:mov ah,0mov ah,0;最高位为最高位为0 0转移到此执行:设置转移到此执行:设置AHAH0 0done:done:等于零转移等于零转移钱晓捷,微型计算机原理及应用,清华大学出版社,钱晓捷,微型计算机原理及应用,清华大学出版社,2006200616例题5-2实现指令CBW功能的程序-3mov al,bvarmov al,bvar;取出要判断的数据取出要判断的数据test al,80htest al,80h;测试最高位测试最高位jnzjnz next2 next2;最高位为最高位为1 1(ZFZF0 0),转移到标号),转移到标号NEXT2NEX
17、T2mov ah,0mov ah,0;最高位为最高位为0 0,顺序执行:设置,顺序执行:设置AHAH00H00Hjmpjmp done done;无条件跳过另一个分支无条件跳过另一个分支next2:next2:mov ah,0ffhmov ah,0ffh;最高位为最高位为1 1转移到此执行:设置转移到此执行:设置AHAHFFHFFHdone:done:不等于零转移不等于零转移钱晓捷,微型计算机原理及应用,清华大学出版社,钱晓捷,微型计算机原理及应用,清华大学出版社,2006200617例题5-2实现指令CBW功能的程序-4mov al,bvarmov al,bvar;取出要判断的数据取出要判断
18、的数据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;最高位为最高位为0 0转移到此执行:设置转移到此执行:设置AHAH00H00Hdone:done:符号为正转移符号为正转移钱晓捷,微型计算机原理及应用,清华大学出版社
19、,钱晓捷,微型计算机原理及应用,清华大学出版社,2006200618例题5-3实现奇偶校验程序-1l奇奇偶偶校校验验是是数数据据通通信信、存存储储等等过过程程中中最最常常用用的的校验方法校验方法l奇奇校校验验:使使包包括括校校验验位位在在内内的的数数据据中中为为“1”1”的个数恒为奇数的个数恒为奇数l偶偶校校验验:使使包包括括校校验验位位在在内内的的数数据据中中为为“1”1”的个数恒为偶数(包括的个数恒为偶数(包括0 0)l奇奇偶偶校校验验只只能能检检测测出出奇奇数数个个位位出出错错的的情情况况,不不能纠错能纠错l实现奇偶校验非常简单实现奇偶校验非常简单硬件上使用异或等电路硬件上使用异或等电路
20、软件上使用异或等指令,奇偶校验标志软件上使用异或等指令,奇偶校验标志PFPF钱晓捷,微型计算机原理及应用,清华大学出版社,钱晓捷,微型计算机原理及应用,清华大学出版社,2006200619例题5-3实现奇偶校验程序-2mov ah,1mov ah,1;1;1号功能号功能int 21hint 21h;键盘输入,返回值在键盘输入,返回值在ALALand al,7fhand al,7fh;最高位置最高位置“0”0”,标志,标志PFPF反映反映“1”1”的个数的个数jnpjnp next1next1;个数为奇数,则转向个数为奇数,则转向NEXT1NEXT1or al,80hor al,80h;最高位置
21、最高位置“1”1”、其他位不变、其他位不变 next1:next1:mov Tdata,almov Tdata,al;保存待发送的数据保存待发送的数据功能编号功能编号 AHAH01H01H出口参数出口参数 ALALASCIIASCII字符字符功能说明功能说明 键盘输入一个字符(回显)键盘输入一个字符(回显)个数为奇数转移个数为奇数转移钱晓捷,微型计算机原理及应用,清华大学出版社,钱晓捷,微型计算机原理及应用,清华大学出版社,2006200620例题5-3实现奇偶校验程序-3mov ah,1mov ah,1;1;1号功能号功能int 21hint 21h;键盘输入,返回值在键盘输入,返回值在AL
22、ALand al,7fhand al,7fh;最高位置最高位置“0”0”,标志,标志PFPF反映反映“1”1”的个数的个数jpjp next2next2;个数为偶数,转向个数为偶数,转向NEXT2NEXT2jmpjmp donedone;个数为奇数,转向保存个数为奇数,转向保存next2:next2:or al,80hor al,80h;最高位置最高位置“1”1”、其他位不变、其他位不变 done:done:mov Tdata,almov Tdata,al;保存待发送的数据保存待发送的数据个数为偶数转移个数为偶数转移 何不合二为一何不合二为一jnp done钱晓捷,微型计算机原理及应用,清华大
23、学出版社,钱晓捷,微型计算机原理及应用,清华大学出版社,2006200621例题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次循环判断次循环判断again:again:shl al,1shl al,1;从高位开始从高位开始jncjnc next next;不为不为1 1,无需处理,无需处理inc ahinc ah;为为1
24、 1,个数加,个数加1 1next:next:loop againloop again钱晓捷,微型计算机原理及应用,清华大学出版社,钱晓捷,微型计算机原理及应用,清华大学出版社,2006200622例题5-4统计“1”位个数程序-2mov ah,1mov ah,1int 21hint 21h;输入一个字符输入一个字符xor ah,ahxor ah,ah;用用AHAH寄存器记录寄存器记录1 1的个数,故先清的个数,故先清0 0again:again:cmp al,0cmp al,0;也可用也可用“TEST AL,0FFH”TEST AL,0FFH”jeje done doneshr al,1sh
25、r al,1;从低位开始从低位开始jncjnc next next;不为不为1 1,无须处理,无须处理inc ahinc ah;为为1 1,个数加,个数加1 1next:next:jmp againjmp againdone:done:好在哪里好在哪里?钱晓捷,微型计算机原理及应用,清华大学出版社,钱晓捷,微型计算机原理及应用,清华大学出版社,2006200623两数大小关系作为条件l无符号数用高(无符号数用高(AboveAbove)、低()、低(BelowBelow)低于(不高于等于):低于(不高于等于):JBJB(JNAEJNAE)不低于(高于等于):不低于(高于等于):JNBJNB(JA
26、EJAE)低于等于(不高于):低于等于(不高于):JBEJBE(JNAJNA)不低于等于(高于):不低于等于(高于):JNBEJNBE(JAJA)l有符号数用大(有符号数用大(GreaterGreater)、小()、小(LessLess)小于(不大于等于):小于(不大于等于):JLJL(JNGEJNGE)不小于(大于等于):不小于(大于等于):JNLJNL(JGEJGE)小于等于(不大于):小于等于(不大于):JLEJLE(JNGJNG)不小于等于(大于):不小于等于(大于):JNLEJNLE(JGJG)钱晓捷,微型计算机原理及应用,清华大学出版社,钱晓捷,微型计算机原理及应用,清华大学出版社
27、,2006200624例题5-5比较两数大小程序mov ax,wvar1mov ax,wvar1;取第一个数据取第一个数据cmp ax,wvar2cmp ax,wvar2;与第二个数据比较与第二个数据比较jeje equalequal;两数相等,转移两数相等,转移jnbjnb firstfirst;第一个数据大,转移第一个数据大,转移mov dx,offset msg2mov dx,offset msg2;第二个数据大第二个数据大jmpjmp donedonefirst:first:mov dx,offset msg1mov dx,offset msg1jmpjmp donedoneequal
28、:equal:mov dx,offset msg0mov dx,offset msg0done:done:mov ah,9mov ah,9;显示结果显示结果int 21hint 21h无符号数无符号数 有符号数有符号数钱晓捷,微型计算机原理及应用,清华大学出版社,钱晓捷,微型计算机原理及应用,清华大学出版社,2006200625例题5-6求绝对值程序;数据段数据段dvardvardd 0bd630422hdd 0bd630422h;有符号数据有符号数据resultresultdd?dd?;保存绝对值保存绝对值;代码段代码段mov eax,dvarmov eax,dvarcmp eax,0cmp
29、 eax,0;比较比较EAXEAX与与0 0jge nonnegjge nonneg;条件满足:条件满足:AX0AX0,转移,转移neg eaxneg eax;条件不满足:条件不满足:AXAX0 0,为负数,需求补得正值,为负数,需求补得正值nonnegnonneg:mov result,eaxmov result,eax;分支结束,保存结果分支结束,保存结果单分支单分支IF-THEN结构结构演示演示钱晓捷,微型计算机原理及应用,清华大学出版社,钱晓捷,微型计算机原理及应用,清华大学出版社,2006200626例题5-7BCD码显示程序mov dl,BCDmov dl,BCD;取取BCDBCD
30、码码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 dl,BCDmov dl,BCD;取取BCDBCD码码and dl,0fhand dl,0fh;只取二进制低只取二进制低4 4位位one:one:or dl,30hor dl,30h;转换低位为转换低位为ASCIIASCII码码mov ah,2mo
31、v ah,2;显示显示int 21hint 21hadd dl,30hadd dl,30h钱晓捷,微型计算机原理及应用,清华大学出版社,钱晓捷,微型计算机原理及应用,清华大学出版社,2006200627例题5-8显示数据最高位程序-1;数据段数据段dvardvardd 0bd630422hdd 0bd630422h;有符号数据有符号数据;代码段代码段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
32、;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结构结构演示演示钱晓捷,微型计算机原理及应用,清华大学出版社,钱晓捷,微型计算机原理及应用,清华大学出版社,2006200628例题5-8显示数据最高位程序-2;数据段数据段dvardvardd 0bd630422hdd 0bd630422h;有符号数据有符号数据;代码段代码段mo
33、v 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、与假设相同,转移、与假设相同,转移mov dl,1mov dl,1;CF;CF1 1,最高位为,最高位为1 1,DL1DL1two:two:mov ah,2mov ah,2int 21hint 21h;显示显示IF-THEN结构结构钱晓捷,微型计算机原理及应用,清华大学出版社,钱晓捷,微型计算机原理
34、及应用,清华大学出版社,2006200629例题5-8显示数据最高位程序-3;数据段数据段dvardvardd 0bd630422hdd 0bd630422h;有符号数据有符号数据;代码段代码段mov ebx,dvarmov ebx,dvarmov dl,0mov dl,0shl ebx,1shl ebx,1;EBX;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顺序结构
35、顺序结构钱晓捷,微型计算机原理及应用,清华大学出版社,钱晓捷,微型计算机原理及应用,清华大学出版社,2006200630例题5-9有符号数运算溢出程序;代码段代码段mov eax,dvar1 mov eax,dvar1 sub eax,dvar2sub eax,dvar2;求差求差jo errorjo error;有溢出,转移有溢出,转移mov dvar3,eaxmov dvar3,eax;无溢出,保存差值无溢出,保存差值lea dx,okmsglea dx,okmsg;显示正确显示正确jmp dispjmp disperror:error:lea dx,errmsglea dx,errmsg
36、;显示错误显示错误disp:disp:mov ah,9mov ah,9int 21hint 21h钱晓捷,微型计算机原理及应用,清华大学出版社,钱晓捷,微型计算机原理及应用,清华大学出版社,2006200631分支程序结构l单分支程序结构单分支程序结构选选好好条条件件转转移移指指令令:当当条条件件满满足足,发发生生转转移移,跳跳过过分支体;条件不满足,顺序执行分支体分支体;条件不满足,顺序执行分支体l双分支程序结构双分支程序结构顺序执行的分支体要有顺序执行的分支体要有JMPJMP指令跳过另一个分支体指令跳过另一个分支体l多分支结构多分支结构分支处理中又有分支,具有多个分支走向分支处理中又有分支
37、,具有多个分支走向可用单分支和双分支实现多个分支结构可用单分支和双分支实现多个分支结构or ah,ahor ah,ahjz function0jz function0dec ahdec ahjz function1jz function1AH=0fuction0YNAH=1fuction1YNAH=2fuction2YN钱晓捷,微型计算机原理及应用,清华大学出版社,钱晓捷,微型计算机原理及应用,清华大学出版社,2006200632例题5-10利用地址表实现多分支程序-1;数据段数据段msgmsgdb Input number(19):,$db Input number(19):,$crlfcr
38、lfdb 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 disp1,disp2,disp3,disp4,disp5dw disp1,disp2,disp3,disp4,disp5dw disp6,disp7,disp8,disp9dw disp6,disp7,disp8,disp9;入口地址表入口地址表地址表地址表分支分支1地址地址分支分支2地址地址标号偏移地址标号偏
39、移地址 offset disp1演示演示钱晓捷,微型计算机原理及应用,清华大学出版社,钱晓捷,微型计算机原理及应用,清华大学出版社,2006200633例题5-10利用地址表实现多分支程序-2;代码段代码段start1:start1:mov dx,offset msgmov dx,offset 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,9
40、mov ah,9int 21hint 21hpop axpop ax;AL;AL数字的数字的ASCIIASCII码码演示演示钱晓捷,微型计算机原理及应用,清华大学出版社,钱晓捷,微型计算机原理及应用,清华大学出版社,2006200634例题5-10利用地址表实现多分支程序-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
41、 tablebx;段内存储器间接转移:段内存储器间接转移:IPTABLEIPTABLEBXBXdisp1:disp1:mov dx,offset msg1mov dx,offset msg1;分支程序分支程序1 1jmp start2jmp start2演示演示钱晓捷,微型计算机原理及应用,清华大学出版社,钱晓捷,微型计算机原理及应用,清华大学出版社,2006200635例题5-10利用地址表实现多分支程序-4jmp tablebxjmp tablebx;IPTABLE;IPTABLEBXBX;地址寻址方式:存储器间接转移地址寻址方式:存储器间接转移;数据寻址方式:数据寻址方式:寄存器相对寻址
42、寄存器相对寻址mov ax,offset tablemov ax,offset tableadd bx,axadd bx,axjmp word ptrbxjmp word ptrbx;IPBX;IPBX;数据寻址方式:数据寻址方式:寄存器间接寻址寄存器间接寻址mov ax,bxmov ax,bxjmp axjmp ax;IPAX;IPAX;数据寻址方式:数据寻址方式:寄存器寻址寄存器寻址演示演示钱晓捷,微型计算机原理及应用,清华大学出版社,钱晓捷,微型计算机原理及应用,清华大学出版社,2006200636循环程序结构循环的初始状态循环的初始状态循环的工作部分循环的工作部分及修改部分及修改部分计
43、数控制循环计数控制循环条件控制循环条件控制循环初始化初始化循环体循环体修改部分修改部分Y YN N控制条件控制条件钱晓捷,微型计算机原理及应用,清华大学出版社,钱晓捷,微型计算机原理及应用,清华大学出版社,2006200637循环指令LOOP labelLOOP label;ECXECX;ECXECX1 1;若;若ECX0ECX0,循环到,循环到LABELLABEL;;否则,顺序执行否则,顺序执行JECXZ labelJECXZ label;ECX;ECX0 0,转移;否则顺序执行,转移;否则顺序执行JCXZ labelJCXZ label;CX;CX0 0,转移;否则顺序执行,转移;否则顺序
44、执行l3232位段使用位段使用ECXECX(1616位段使用位段使用CXCX)作为计数器)作为计数器l目标地址采用相对短转移目标地址采用相对短转移DEC ECXDEC ECXJNZ labelJNZ label钱晓捷,微型计算机原理及应用,清华大学出版社,钱晓捷,微型计算机原理及应用,清华大学出版社,2006200638例题5-11数组求和程序-1mov ecx,lengthof arraymov ecx,lengthof arrayxor eax,eaxxor eax,eax;求和初值为求和初值为0 0mov ebx,eaxmov ebx,eax;数组指针为数组指针为0 0again:aga
45、in:movzx edx,arrayebx*(type array)movzx edx,arrayebx*(type array)add eax,edxadd eax,edx;求和求和 inc ebxinc ebxloop againloop againmov sum,eaxmov sum,eax;保存结果保存结果循环初始循环初始循环体循环体循环控制循环控制演示演示钱晓捷,微型计算机原理及应用,清华大学出版社,钱晓捷,微型计算机原理及应用,清华大学出版社,2006200639例题5-11数组求和程序-2mov ecx,lengthof arraymov ecx,lengthof arrayxo
46、r eax,eaxxor eax,eax;求和初值为求和初值为0 0jecxz donejecxz done;数组元素为数组元素为0 0,不,不再进行求和再进行求和mov 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 againdone:done:mov sum,eaxmov sum,eax;保存结果保存结果钱晓捷,微
47、型计算机原理及应用,清华大学出版社,钱晓捷,微型计算机原理及应用,清华大学出版社,2006200640字符串输入功能功能编号功能编号 AHAH0AH0AH入口参数入口参数 DSDXDSDX键盘输入缓冲区逻辑地址键盘输入缓冲区逻辑地址(段地址(段地址偏移地址)偏移地址)功能说明功能说明 读读取取从从键键盘盘输输入入的的一一个个字字符符串串(有有回回显显),直到按下回车键。直到按下回车键。键键盘盘输输入入缓缓冲冲区区的的第第1 1个个字字节节是是缓缓冲冲区区字字节节大大小小(最最大大为为255255),第第2 2个个字字节节在在调调用用结结束束时时被被功功能能调调用用填填进进输输入入的的字字符符个
48、个数数,第第3 3个个字字节节开开始始存存放放输输入入字字符符的的ASCIIASCII码码,最最后后是回车字符(是回车字符(0DH0DH)。)。钱晓捷,微型计算机原理及应用,清华大学出版社,钱晓捷,微型计算机原理及应用,清华大学出版社,2006200641例题5-12输入字符串大小写转换程序-1;数据段数据段keynumkeynum=255=255keybufkeybufdb keynumdb keynum;键盘输入缓冲区键盘输入缓冲区db 0db 0db keynum dup(0)db keynum dup(0);代码段代码段mov dx,offset keybufmov dx,offset
49、 keybuf;设置入口参数设置入口参数DXDXmov ah,0ahmov ah,0ahint 21hint 21h;用户用回车键结束用户用回车键结束mov dl,0ahmov dl,0ah;回车后再进行换行回车后再进行换行mov ah,2mov ah,2int 21hint 21h输入输入“Hi”,回车,缓冲区:,回车,缓冲区:FF 02 48 69 0D 00 钱晓捷,微型计算机原理及应用,清华大学出版社,钱晓捷,微型计算机原理及应用,清华大学出版社,2006200642例题5-12输入字符串大小写转换程序-2mov bx,offset keybuf+1mov bx,offset keyb
50、uf+1;输入字符个数输入字符个数mov cl,bxmov cl,bxmov ch,0mov ch,0;作为循环的次数作为循环的次数again:again:inc bxinc bx;BX;BX指向输入字符指向输入字符mov dl,bxmov dl,bx;取出一个字符取出一个字符cmp dl,acmp dl,a;小于小写字母小于小写字母“a”a”jb dispjb dispcmp dl,zcmp dl,z;大于小写字母大于小写字母“z”z”ja dispja disp;直接去显示直接去显示sub dl,20hsub dl,20h;小写字母转换为大写字母小写字母转换为大写字母disp:disp:m