鱼C论坛

 找回密码
 立即注册
查看: 2978|回复: 4

dword型数据转变如何得到各位ASICC码

[复制链接]
发表于 2012-11-15 10:03:14 | 显示全部楼层 |阅读模式
1鱼币
(ax)=dword型数据的低16位
(dx)=dword型数据的高16位

比如97479的十六进制为:17CC7H

谁写个32位的数据转换成ASCII码
代码

小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-11-15 10:39:09 | 显示全部楼层
dtoc:       push si
            push di
            push bp
            push cx
            push bx
            mov bx,10
            mov si,0
            ;-----------保存数据
d_hys:      mov bp,ax
            ;-----------转移L位
            mov ax,dx
            xor dx,dx
            ;-----------H转AX D清零
            div bx
            ;-----------H/10
            mov di,ax
            ;-----------H结果=DI
            mov ax,bp
            ;-----------L重赋给AX
            div bx
            ;-----------REG+L/10  DX=余娄  H结果=DI
            ;===========          L结果AX
            
            mov cx,bp
            jcxz d_wk            
            ;-----------余数为空jmp 到出栈
            add dx,30h
            push dx
            inc si
            xor dx,dx
            ;------------余数+30H=ASCII
            mov dx,di
            ;------------H重赋给DX
            jmp d_hys
            ;------------判断H为0,不为0循环
            ;============          为0做L位除法
d_wk:       mov cx,si
            ;------------设定循环数
            jcxz d_ecs
            ;------------CX为0 jmpECS
            mov si,offset d4
            ;------------d4数据给SI        
d_cz:       pop ds:[si]
            inc si
            loop d_cz              
            ;-------------循环出栈

d_ecs:      pop bx
            pop cx
d_2:        pop bp
            pop di        
            pop si
            ret
俺写的,希望对你有帮助!!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-11-15 14:39:59 | 显示全部楼层
我也来个。
  1. assume cs:codesg,ds:datasg,es:table,ss:stack

  2. table segment

  3.   db '1975','1976','1977','1978','1979','1980','1981','1982','1983'
  4.   db '1984','1985','1986','1987','1988','1989','1990','1991','1991'
  5.   db '1993','1994','1995'
  6.   ;以上是表示21年的21个字符串
  7.   
  8.    dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
  9.    dd 345980,590827,803530,1183000,1843000,2795000,3753000,4649000,5937000
  10.   ;以上是表示21年公司总收入的21个dword型数据
  11.   
  12.   dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226
  13.   dw 11542,14430,15257,17800
  14.   ;以上是表示21年公司雇员人数的21个word型数据
  15.   
  16.   dw 5,3,42,104,85,210,123,111,105,125,140,136,153,211,199,209,224,239
  17.   dw 260,304,333
  18.   ;以上是表示21年公司人均收入
  19.   
  20.   dd 10 dup (0)
  21. table ends

  22. datasg segment
  23.   
  24.   db 1000 dup (0)
  25.   
  26. datasg ends

  27. stack segment

  28.   db 100 dup (0)

  29. stack ends

  30. codesg segment

  31.   start:
  32.          
  33.             mov ax,datasg
  34.                         mov ds,ax
  35.                        
  36.                     mov ax,table
  37.                         mov es,ax
  38.                         mov si,0
  39.                         mov bp,0
  40.                        
  41.                         mov ax,stack
  42.                         mov ss,ax
  43.                         mov sp,100
  44.                        
  45.                         mov cx,21
  46.         s7:                call dtoc
  47.                         add bp,16               ;bp加16换行
  48.                     add di,4                ;si+4
  49.                         loop s7
  50.                        
  51.             mov ax,4c00h
  52.             int 21h                       

  53.                      

  54.                
  55.         dtoc:
  56.               push cx
  57.                   push di
  58.                   push si
  59.           push bp
  60.                   ;cx、si入栈


  61.         s4:                           
  62.               mov ax,es:[di+54h]
  63.               mov dx,es:[di+56h]
  64.          

  65.                   

  66.                   mov bx,10
  67.                   
  68.         s1:  mov bp,ax     ;转移到L位
  69.                  
  70.                  mov ax,dx     ;dx值等于ax
  71.                   
  72.                  xor dx,dx     ;-----------H转AX D清零
  73.                  
  74.                  div bx        ;H除以bx
  75.          
  76.                  mov di,ax     ;H结果=di
  77.                  
  78.                  mov ax,bp     ;ax植出栈,L重赋给ax
  79.                  
  80.                  div bx        ;-----------REG+L/10  DX=余娄  H结果=DI
  81.                        ;===========          L结果AX           
  82.                  
  83.                  mov cx,bp     ;商为零cx
  84.                  
  85.                  jcxz d_wk     ;-----------余数为空jmp 到出栈

  86.                  add dx,30h
  87.          push dx
  88.          inc si
  89.          xor dx,dx
  90.          ;------------余数+30H=ASCII
  91.          mov dx,di
  92.          ;------------H重赋给DX
  93.          jmp s1
  94.             ;------------判断H为0,不为0循环
  95.             ;============          为0做L位除法

  96.                  
  97.         d_wk:    mov cx,si
  98.             ;------------设定循环数

  99.             ;------------CX为0 jmpECS
  100.          

  101.                  jcxz s3       ;cx为零转移到s2
  102.                   


  103.                   
  104.                   mov si,0
  105.                   mov di,0            ;di等于0
  106.                   
  107.         s3:   pop ax              ;dx植出栈放入ax
  108.          
  109.                   mov es:[di+100h],al   ;[bp+di+05h]=al
  110.                   add di,1                      ;di加1
  111.                                                         
  112.                   loop s3                 ;loop 循环
  113.          
  114.                   pop bp                                                       
  115.                   mov cx,di
  116.          
  117.         s2:          mov al,es:[si+100h]     
  118.                   mov ds:[si+bp+05h],al
  119.                   
  120.                   add si,1
  121.                   
  122.                   loop s2
  123.                   



  124.         okay: pop si
  125.               pop di
  126.                   pop cx                          
  127.                   
  128.                   ret

  129. codesg ends

  130. end start
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-11-15 23:16:26 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-3-13 19:34:50 | 显示全部楼层
s0512 发表于 2012-11-15 23:16
嗯。。。。厉害。。。。楼主给力

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-5 13:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表