| 
 | 
 
 
发表于 2018-6-17 07:46:56
|
显示全部楼层
 
 
 
 本帖最后由 人造人 于 2018-6-17 11:02 编辑  
 
偷个懒,用C语言写个转换函数 ^_^ 
- assume cs:code, ds:data, ss:stack
 
  
- ; void far NumberToString(char *buf, int value, char str_end_flag)
 
 - extrn _NumberToString:far
 
  
- stack segment
 
 -         db 1024 dup(?)
 
 - stack ends
 
  
- data segment
 
 - buf:
 
 -         db 1024 dup(?)
 
 -         
 
 - data ends
 
  
- code segment
 
 - start:
 
 -         mov        ax, stack
 
 -         mov        ss, ax
 
 -         mov        sp, 1024
 
 -         mov        ax, data
 
 -         mov        ds, ax
 
 -         
 
 -         mov        ax, '
 
  
- 需要用 tc 编译 Funs.c
 
 - [code]static void Swap(char *a, char *b)
 
 - {
 
 -         char t = *a;
 
 -         *a = *b;
 
 -         *b = t;
 
 - }
 
  
- void far NumberToString(char *buf, int value, char str_end_flag)
 
 - {
 
 -         int i = 0;
 
 -         int j;
 
 -         int max;
 
 -         int rem;
 
 -         
 
 -         while(value != 0)
 
 -         {
 
 -                 rem = value % 10;
 
 -                 value /= 10;
 
 -                 buf[i++] = rem + '0';
 
 -         }
 
 -         
 
 -         /* 字符串结束标志,dos 比较奇怪,不使用 '\0',使用 '
 
  
 
- 
 
Funs.zip
(1.16 KB, 下载次数: 0)
 
 -                 ; 字符串结束标志
 
 -         push        ax
 
 -         mov        ax, 123
 
 -         push        ax
 
 -         mov        ax, buf
 
 -         push        ax
 
 -         call        _NumberToString
 
 -         add        sp, 6
 
 -         
 
 -         ; DS:DX=待输出字符的地址
 
 -         mov        ah, 09h
 
 -         mov        dx, buf
 
 -         int        21h
 
 -         
 
 -         mov        ax, 4c00h
 
 -         int        21h
 
 - code ends
 
 - end start
 
 
  复制代码 
 
需要用 tc 编译 Funs.c 
 
 
 
 
 表示字符串结束 */ 
        buf[i] = str_end_flag; 
         
        --i;        /* 指向最后一个字符 */ 
        max = i / 2; 
        for(j = 0; j <= max; ++j) 
        { 
                Swap(&buf[j], &buf[i]); 
                --i; 
        } 
} 
[/code] 
 
 
 
                ; 字符串结束标志 
        push        ax 
        mov        ax, 123 
        push        ax 
        mov        ax, buf 
        push        ax 
        call        _NumberToString 
        add        sp, 6 
         
        ; DS:DX=待输出字符的地址 
        mov        ah, 09h 
        mov        dx, buf 
        int        21h 
         
        mov        ax, 4c00h 
        int        21h 
code ends 
end start 
[/code] 
 
需要用 tc 编译 Funs.c 
 
 
 
 
 |   
 
 
 
 |