|
发表于 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
|
|