第4章汇编语言程序设计00设晶振仍为12MHz,则上面程序的执行时间T为T=1usX(1+1 XMT1+1 XMT2XMT1+1 XMT2 XMT1+2 X(4-2)MT2 XMT1+2XMT1)4.4.2代码转换1.十六进制到ASCII码的转换[例4.17】将20H单元中的两个十六进制数转换成ASCI码低4位的ASCII码保存在21H单元,高4位的ASCII码保存在22H单元。由ASCII编码表可知,转换方法为:若十六进制数小于10,则此数加30H,否则加上37H就可以将十六进制数转换成ASCII码。士讲昊政江
第4章 汇编语言程序设计 主讲;吴政江 设晶振仍为12 MHz,则上面程序的执行时间T为: T=1μs×(1+1×MT1+1×MT2×MT1+1×MT2×MT1+2× MT2×MT1+2×MT1) (4-2) 4.4.2 1.十六进制到ASCII码的转换 [例4.17] 将20H单元中的两个十六进制数转换成ASCII码, 低4位的ASCII码保存在21H单元,高4位的ASCII码保存在 22H单元。 由ASCII编码表可知,转换方法为:若十六进制数小于 10,则此数加30H,否则加上37H就可以将十六进制数转换 成ASCII码
第4章汇编语言程序设计aMOVA,20H: (20H)→AANL;屏蔽高4位A,OFH;求低位十六进制数的ASCI码ACALLCHANGEMOV21H,A;保存低位十六进制数的ASCI码MOVA,20H; (20H)→AANL;屏蔽低4位A,#OFOHA;高位十六进制数送低4位SWAPACALL CHANGE;求高位十六进制数的ASCI码MOV22H,A;保存高位十六进制数的ASCI码RET讲昊政江
第4章 汇编语言程序设计 主讲;吴政江 MOV A,20H ;(20H)→A ANL A,0FH ;屏蔽高4位 ACALL CHANGE ;求低位十六进制数的ASCII码 MOV 21H,A ;保存低位十六进制数的ASCII码 MOV A,20H ;(20H)→A ANL A,#0F0H ;屏蔽低4位 SWAP A ;高位十六进制数送低4位 ACALL CHANGE ;求高位十六进制数的ASCII码 MOV 22H,A ;保存高位十六进制数的ASCII码 RET
第4章汇编语言程序设计HPUSH A;操作数进栈保护CHANGE:CCLR;进位标志清零;与10比较A,#OAHSUBBAPOP;取出操作数JCNUM;比10小转NUMADDA,#07H;大于等于10加37H;加30HADDNUM :A,#30HRET丰讲昊政江
第4章 汇编语言程序设计 主讲;吴政江 CHANGE: PUSH A ;操作数进栈保护 CLR C ;进位标志清零 SUBB A,#0AH ;与10比较 POP A ;取出操作数 JC NUM ;比10小转NUM ADD A,#07H ;大于等于10加37H NUM: ADD A,#30H ;加30H RET
第4章 汇编语言程序设计602.单字节二进制数转换为BCD数[例4.18]已知20H单元存放一个二进制数,编程将它转换为BCD数,百位送入FIRST单元的低4位,十位和个位分别送入SECOND单元的高4位和低4位。本题只需将20H单元中的内容除以100,得到的商就是百位BCD数,然后用余数除以10,其结果中,商为十位BCD数,余数为个位BCD数。丰讲昊政江
第4章 汇编语言程序设计 主讲;吴政江 2.单字节二进制数转换为BCD数 [例4.18] 已知20H单元存放一个二进制数,编程将 它转换为BCD数,百位送入FIRST单元的低4位,十位 和个位分别送入SECOND单元的高4位和低4位。 本题只需将20H单元中的内容除以100,得到的商就 是百位BCD数,然后用余数除以10,其结果中,商为 十位BCD数,余数为个位BCD数
第4章 汇编语言程序设计HORG0100HFIRST DATA 30HSECONDDATA 31H;被除数送AMOV A ,20H;除数100送BMOV B,#64HAB;A除以BDIVMOV;百位BCD数送FIRSTFIRSTA;余数送AMOVAB丰讲昊政江
第4章 汇编语言程序设计 主讲;吴政江 ORG 0100H FIRST DATA 30H SECOND DATA 31H MOV A,20H ;被除数送A MOV B,#64H ;除数100送B DIV AB ;A除以B MOV FIRST,A ;百位BCD数送FIRST MOV A,B ;余数送A