当前位置:编程学习 > 汇编语言 >>

如何用汇编语言把十六进制数1A5F转换成ascii码并显示在屏幕上

答案:刚好我写了一个,调试都通过可以执行的,希望能帮到你。 .386 .model flat,stdcall option casemap:none include windows.inc include user32.inc include kernel32.inc includelib user32.lib includelib kernel32.lib .data szCaption db 'convert num to srting',0 szResult db 6 dup(0) .code _Translate proc para1:DWORD,para2:DWORD ;定义子函数,para1变量用来放传入的数组,para2用于放编程ASIC后的字符数组 LOCAL _iNum ;定义零时变量,用于放被除数 LOCAL _iTemp ;定义零时变量,用于存放除数 LOCAL _szTemp[265]:BYTE mov eax,para1; ;获取参数para1的值eax寄存器 mov _iNum,eax ;将eax中的值放入零时变量_iNum mov _iTemp,10H lea ebx,_szTemp xor ecx,ecx .while _iNum ;当被除数不为0时,就一直循环 xor edx,edx mov eax,_iNum ;将被除数放入eax寄存器中 div _iTemp ;寄存器eax中的值除以_iTemp,商放入eax中,余数放入dl中 mov _iNum,eax .if dl>9H ;当余数大于9时,就转化为相对应的英文字母的ASIC的值 add dl,37H .else add dl,30H .endif mov byte ptr [ebx],dl;把变化后的值放入ebx寄存器中 inc ebx inc ecx .endw mov eax,para2 ;将参数para2的地址传给eax寄存器,再讲ecx中的值倒序存入eax寄存器中 mov byte ptr [eax+ecx],0 lea ebx,_szTemp .repeat mov dl,byte ptr [ebx] mov byte ptr [eax+ecx-1],dl inc ebx .untilcxz ;一直循环,直到cx的值=0,每次循环后ecx的值-1 ret _Translate endp start: mov eax,1A5FH ;修改这里的数,就能把任意16进制的数转化为ASIC码了 invoke _Translate,eax,offset szResult invoke MessageBox,NULL,offset szResult,offset szCaption,MB_OK invoke ExitProcess,0 end start
其他:1变成31h
A变成41h
5       35h
F       46h
转化后就可以显示了,转化算法很简单,你自己考虑 

上一个:求芯片74hc164的输入输出程序,要求使用汇编语言。
下一个:汇编语言的问题

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,