用汇编语言,将一个数字的ASCII码值显示出来;ex0421.asminclude io32.inc ;包含32位输入输出文件.data ;数据段msg0 byte '1234';.code ;代码段start:;程序起始位置mov eax,offset msg0 ;EAX指向msg0call dispmsg ;调用I/O子
来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/25 12:37:00
用汇编语言,将一个数字的ASCII码值显示出来;ex0421.asminclude io32.inc ;包含32位输入输出文件.data ;数据段msg0 byte '1234';.code ;代码段start:;程序起始位置mov eax,offset msg0 ;EAX指向msg0call dispmsg ;调用I/O子
用汇编语言,将一个数字的ASCII码值显示出来
;ex0421.asm
include io32.inc ;包含32位输入输出文件
.data ;数据段
msg0 byte '1234';
.code ;代码段
start:;程序起始位置
mov eax,offset msg0 ;EAX指向msg0
call dispmsg ;调用I/O子程序显示
call dispcrlf ;光标回车换行
disp:;显示输入数字的ASCII码
mov al,06H ;将6(十六进制)赋值给AL
mov bl,al ;将AL的值送到BL中
rol al,4 ;将高4位移往低4位
call htoasc ;调用子程序htoasc查出原高4位的ASCII码
rol al,4 ;将高4位移往低4位
call dispc ;显示第一个字符,即ASCII码的高半字节
mov al,bl ;将BL的值送到AL中
call htoasc ;调用子程序htoasc查出原低4位的ASCII码
call dispc ;显示第二个字符,即ASCII码的低半字节
mov al,'H' ;将“H”存入AL中
call dispc ;显示字符“H”
exit 0 ;程序正常执行结束
htoasc proc ;子程序htoasc,将AL表达的一位十六进制数转换为ASCII码
and al,0fH ;只取AL的低4位
or al,30H ;AL的高4位变成“3”
htoend:ret ;子程序返回
htoasc endp ;子程序结束
end start ;汇编结束
想把06h的ASII码36H显示出来,为什么3总是显示不出来呢?运行结果是06H.百思不得其解啊!
把第一个call htoasc后面那行rol al,4删掉,运行结果还是06H.为什么?
用汇编语言,将一个数字的ASCII码值显示出来;ex0421.asminclude io32.inc ;包含32位输入输出文件.data ;数据段msg0 byte '1234';.code ;代码段start:;程序起始位置mov eax,offset msg0 ;EAX指向msg0call dispmsg ;调用I/O子
想把06h的ASII码36H显示出来,...
-------------------
06h的ASCII码,不是36H.
'6' ,才是 6 的 ASCII 码,这才是 36H.
你把:mov al,06H ;
改成:mov al,'6' ;
试试看.