〔例4-7字母判断程序 ca readc 微机原理与接口技术·第4版机械工业出版社 ;输入一个字符,从AL返回值 cmpa1,A’;与大写字母A比较 jb done ;比大写字母A小,不是大写字母,转移 cmp al,Z 与大写字母Z比较 ja done ;比大写字母Z大,不是大写字母,转移 ora1,20h;转换为小写 call dispcrlf;回车换行 call disp;显示小写字母 done
微 机 原 理 与 接 口 技 术 · 第 4 版 机 械 工 业 出 版 社 〔例4-7〕字母判断程序 call readc ; 输入一个字符,从AL返回值 cmp al,'A’ ; 与大写字母A比较 jb done ; 比大写字母A小,不是大写字母,转移 cmp al,'Z’ ; 与大写字母Z比较 ja done ; 比大写字母Z大,不是大写字母,转移 or al,20h ; 转换为小写 call dispcrlf ; 回车换行 call dispc ; 显示小写字母 done:
4.14双分支结构 粤>双分支程序结构有两个分支,条件为真执行 个分支;条件为假,执行另一个分支 术 ●相当于高级语言的IF- THEN-ELSE语句 第>顺序执行的分支体1最后一定要有一条M指 版令跳过分支体2 械 JMP指令必不可少,实现结束前一个分支回到共 同的出口作用 版>双分支结构有时可以改变为单分支结构 ●事先执行其中一个分支(选择出现概率较高的 分支)
微 机 原 理 与 接 口 技 术 · 第 4 版 机 械 工 业 出 版 社 4.1.4 双分支结构 ➢双分支程序结构有两个分支,条件为真执行 一个分支;条件为假,执行另一个分支 相当于高级语言的IF-THEN-ELSE语句 ➢顺序执行的分支体1最后一定要有一条JMP指 令跳过分支体2 JMP指令必不可少,实现结束前一个分支回到共 同的出口作用 ➢双分支结构有时可以改变为单分支结构 事先执行其中一个分支(选择出现概率较高的 分支)
微机原理与接口 〔例4-8〕显示数据最高位程序-1 数据段 接 dvar dword0bd630422h;假设一个数据 ;代码段 mov ebx. dvar 技术·第4版机械工业出版社 shl ebx,1;EBX最高位移入CF标志 Jc one CF=1,即最高位为1,转移 mov al, 0 CF=0,即最高位为0:AL←’0 jmp two ;一定要跳过另一个分支 one: mov al,’1 AL←’1 two: call di spc 显示 双分支结构二二 示意图
微 机 原 理 与 接 口 技 术 · 第 4 版 机 械 工 业 出 版 社 〔例4-8〕显示数据最高位程序-1 ; 数据段 dvar dword 0bd630422h ; 假设一个数据 ; 代码段 mov ebx,dvar shl ebx,1 ; EBX最高位移入CF标志 jc one ; CF=1,即最高位为1,转移 mov al,'0' ; CF=0,即最高位为0:AL←'0' jmp two ; 一定要跳过另一个分支 one: mov al,'1' ; AL←'1' two: call dispc ; 显示 示意图 双分支结构
〔例4-8〕显示数据最高位程序-2 微机原理与接口技术·第4版机械工业出版社 mov ebx. dvar mo al.0 ;假设最高位为0:AL←'0 shl ebx. 1 ;EB最高位移入CF标志 Jnc two ;CF=0,即最高位为0,转移 mov al.1 ;CF=1,即最高位为1,AL←’1 tWo: call disp;显示 单分支结构
微 机 原 理 与 接 口 技 术 · 第 4 版 机 械 工 业 出 版 社 〔例4-8〕显示数据最高位程序-2 mov ebx,dvar mov al,'0' ; 假设最高位为0:AL←'0' shl ebx,1 ; EBX最高位移入CF标志 jnc two ; CF=0,即最高位为0,转移 mov al,'1' ; CF=1,即最高位为1,AL←'1' two: call dispc ; 显示 单分支结构
微机原理与接一 〔例4-9〕有符号数运算溢出程序 数据段 dvar1 dword1234567890;假设两个数据 口dvar2 dword-999999 米dvar3 dword? okmsg byte' Correct!',0;正确信息 第4版机械工业出版社 4 errmsg byte ERROR! Overflow 0;错误信息 ;代码段 moy eax darl sub eax dvar 2 求差 o error ;有溢出,转移 moy dvar3 eax 无溢出,保存差值 moⅴeax, offset okmsg;显示正确 jmp disp error: mov eax, offset errmsg;显示错误 disp call dispmsg
微 机 原 理 与 接 口 技 术 · 第 4 版 机 械 工 业 出 版 社 〔例4-9〕有符号数运算溢出程序 ; 数据段 dvar1 dword 1234567890 ; 假设两个数据 dvar2 dword -999999999 dvar3 dword ? okmsg byte 'Correct!',0 ; 正确信息 errmsg byte 'ERROR ! Overflow!',0 ; 错误信息 ; 代码段 mov eax,dvar1 sub eax,dvar2 ; 求差 jo error ; 有溢出,转移 mov dvar3,eax ; 无溢出,保存差值 mov eax,offset okmsg ; 显示正确 jmp disp error: mov eax,offset errmsg ; 显示错误 disp: call dispmsg