注册 登录
编程论坛 汇编论坛

看雪上一个程序的小问题不懂~

loknight123 发布于 2008-11-29 12:38, 941 次点击
最后输出为什么DL还要+48呢?~
assume CS:code,DS:data

 

data segment

line db '23456@#%SDFghj','$'

da1 db 0

da2 db 0

da3 db 0

res1 db 0ah,0dh,'letter:','$'

res2 db 0ah,0dh,'number:','$'

res3 db 0ah,0dh,'others:','$'

data ends

 

code segment

start:   

  mov AX,data

  mov DS,AX

 

  lea BX,line

  mov CX,000eh

 

s:  

  mov DL,[BX]

  cmp DL,30h

  js s0

  cmp DL,39h

  jns c1

 

s1:  

  mov DH,da1

  inc DH

  mov da1,DH

  jmp theends

c1:  

  cmp DL,41h

  js s0

 

c2:  

  cmp DL,5ah

  jns c3

 

s2:  

  mov DH,da2

  inc DH

  mov da2,DH

  jmp theends

 

c3:  

  cmp DL,61h

  js s0

  cmp DL,7ah

  js s2

  jz s2

 

s0:  

  mov DH,da3

  inc DH

  mov da3,DH

  jmp theends

 

theends:  

  inc BX

  loop s

  

  lea DX,line

  mov Ah,09

  int 21h

 

  lea DX,res1

  mov Ah,09

  int 21h

 

        mov DL,DS:[da1]

  add DL,48

        mov Ah,02

  int 21h

 

  lea DX,res2

  mov Ah,09

  int 21h

 

       mov DL,DS:[da2]

  add DL,48

        mov Ah,02

  int 21h

 

  lea DX,res3

  mov Ah,09

  int 21h

 

       mov DL,DS:[da3]

   add DL,48

        mov Ah,02

  int 21h

  

        mov AX,4c00h

   int 21h

code ends

end  start
3 回复
#2
cnhanxiao2008-11-29 14:06
回复 楼主 loknight123 的帖子
是为了转成ASCII码,这样才能显示
#3
loknight1232008-11-29 23:07
但是他不是直接用输入字符的16进制进行比较的么,并没有-什么啊?~
#4
ONEPROBLEM2008-11-29 23:51
da1 da2 da3 得出了结果后,要以字符的形式显示在屏幕上,就得转换在ASCII码,才行~~
1