急!!

houximing001 2003-12-12 02:29:25
十六进制数转化成ascii码程序
请写源代码,急!
...全文
64 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
波尔多1 2003-12-14
  • 打赏
  • 举报
回复
源程序:
data segment
a db 2bh
data ends
code segment
assume cs:code,ds:data
start: mov ax,data
mov ds,ax
mov al,a
mov cl,4
shr al,cl
call tran
mov ah,02h
int 21h
mov al,a
and al,0fh
call tran
mov ah,02h
int 21h
mov dl,'h'
int 21h
mov ah,4ch
int 21h
tran proc
cmp al,10
jae add37
add al,30h
jmp next
add37: add al,37h
next: mov dl,al
ret
tran endp
code ends
end start
紫郢剑侠 2003-12-12
  • 打赏
  • 举报
回复
屏幕输出十进制的一个宏定义

作者:JennyVenus()
作者网站:

文章源自:csdn论坛 http://www.csdn.net

收藏日期:2003-09-23


 

 
DOSSEG
.MODEL SMALL
.DATA
.STACK
.CODE
BEGIN:
MOV AX,0
NEXT:
PRINTVAL AX
INC AX
CMP AX, 10000
JB NEXT
EXIT:
MOV AH,4CH
INT 21H
END BEGIN
这个是主程序,应该不太难懂吧。就是调用了PRINTVAL这个宏来实现打印一个寄存器或者内存的值。

而PRINTVAL宏的作用就是在屏幕上输出一个无符号的整形数。
PRINTVAL MACRO X
LOCAL PRINTTEMP2,PRINTT1,PRINTT2,PRINTT3,PRINTT4,PRINTT5 ;局部标号
PUSH AX ;保存堆栈
PUSH BX
PUSH CX
PUSH DX
MOV AX,X ;把要打印的数据放在AX中
MOV BX,10 ;被除数放在BX中,被除数=10
MOV DX,0 ;余数放在DX中
MOV CX,5 ;一个整形数最多5位,所以循环5次
PRINTTEMP2:
DIV BX ;DX:AX / BX, 结果放在AX中,余数放在DX中,如果DX:AX = 5678
;那么现在DX = 8 AX = 567
PUSH DX ;把8放入堆栈
MOV DX,0 ;设置DX:AX = 567;否则除数就会变得更大而出现错误
LOOP PRINTTEMP2 ;循环五次,这样堆栈里面分别放入 8 7 6 5 0 五个数

POP AX ;弹出最高位,目前是0
MOV BH,AL ;放在BH中 BH = 0
POP AX
MOV BL,AL ;BL = 5
POP AX
MOV CH,AL ;CH = 6
POP AX
MOV CL,AL ;CL = 7
;POP AX
;PUSH AX
CMP BH,0 ;如果BH不等于0那么打印他 -- 不大印第一个0
JA PRINTT1
CMP BL,0 ;如果BL不等于0那么打印他 -- 打印5
JA PRINTT2
CMP CH,0 ;如果CH不等于0那么打印他 -- 打印6
JA PRINTT3
CMP CL,0 ;如果CL不等于0那么打印他 -- 打印7
JA PRINTT4
JMP PRINTT5 ;最后一个是0也得打印。后面的调用中断打印字符,不用说了。
PRINTT1:
MOV DL,BH
ADD DL,30H
MOV AH,02H
INT 21H
PRINTT2:
MOV DL,BL
ADD DL,30H
MOV AH,02H
INT 21H
PRINTT3:
MOV DL,CH
ADD DL,30H
MOV AH,02H
INT 21H
PRINTT4:
MOV DL,CL
ADD DL,30H
MOV AH,02H
INT 21H
PRINTT5: POP AX
MOV DL,AL
ADD DL,30H
MOV AH,02H
INT 21H
MOV DL,10
INT 21H
MOV DL,13
INT 21H
POP DX
POP CX
POP BX
POP AX
ENDM
hcj2002 2003-12-12
  • 打赏
  • 举报
回复
up
^_^
最近有人说下不了,我看了一下,能下载,多尝试几次~!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 找来一个很有用的声卡驱动解决方案,是我尝试了n次(不下20)还搭上某人的辛苦劳动,才成功让我的Win7发出声音的!!!以下是引用本站“实话实说”的博客。。。 你看到这篇文章时候估计你快被windows7无法安装声卡驱动而崩溃了,呵呵,别,这篇文章是你的救星,本人已经试验多台电脑,完美解决windows7声卡驱动安装失败这一问题 有个前提,你已经有适合自己机子声卡驱动就是总是安装失败,若没有声卡驱动可以用驱动人生(或者其他驱动检测设备)检测并下载适合自己的驱动以备下一步使用。 闲话少说,正文: 1.先下载解压 windows7声卡驱动修复 压缩包。 2.打开你系统的所在盘进入Windows-system32-Driverstore-FileRepository在里面找到wdmaudio.inf_x86_neutral_aed2a4456700dfde文件夹. 一个一个慢慢找吧别着. 4.再进入(wdmaudio.inf_x86_neutral_aed2a4456700dfde)文件夹把里面的东西全删了(删不掉,因为需要管理员权限 ,用windows7 优化大师 -->系统设置--->又键设置--->获取管理员权限(文件\文件夹)--应用到系统,然后对删不掉的文件点右键 --获取管理员权限---删除) 5.回到你刚刚解压的文件夹 6.把里面文件全部复制粘贴到wdmaudio.inf……文件夹里面 7.重新安装声卡驱动. 8.重启ok 问题解决了 如果没有WIN7驱动程序,用vista的也可以

21,499

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧