|
发表于 2018-6-19 23:38:40
|
显示全部楼层
C语言中的 '\t' 并不好用
^_^
偷个懒,有 3 个函数用C语言写了
如果你觉得不爽,可以把这 3 个函数翻译成汇编语言
^_^
之前贴过类似的代码,不过那个排版有 bug
这个应该也有,试一试吧
下面是代码
- assume cs:code, ds:data, ss:stack
- ; void far Align(char *buf, const char *str, int len)
- extrn _Align:far
- ; void far NumberToString(char *buf, int num)
- extrn _NumberToString:far
- stack segment
- db 1024 dup(?)
- stack ends
- data segment
- buf db 1024 dup(?)
- str1 db 'dfhm', 0
- str2 db 'oewirut', 0
- score db 15, 24
-
- data ends
- code segment
- start:
- mov ax, stack
- mov ss, ax
- mov sp, 1024
- mov ax, data
- mov ds, ax
-
- mov ax, 12
- push ax
- mov ax, offset str1
- push ax
- mov ax, offset buf
- push ax
- call _Align
- add sp, 6
-
- ; DS:DX=待输出字符的地址
- mov ah, 09h
- mov dx, offset buf
- int 21h
-
- xor ax, ax
- mov bx, offset score
- mov al, [bx]
- push ax
- mov ax, offset buf
- push ax
- call _NumberToString
- add sp, 4
-
- ; DS:DX=待输出字符的地址
- mov ah, 09h
- mov dx, offset buf
- int 21h
-
- ; 换一行
- mov bx, offset buf
- mov al, 0dh
- mov [bx + 0], al
- mov al, 0ah
- mov [bx + 1], al
- mov al, '
- 下面这个C语言代码需要用tc编译
- [code]static void Swap(char *a, char *b)
- {
- char ch = *a;
- *a = *b;
- *b = ch;
- }
- void far NumberToString(char *buf, int num)
- {
- int i = 0;
- int j = 0;
-
- while(num)
- {
- int rem = num % 10;
- num /= 10;
- buf[i++] = rem + '0';
- }
- buf[i] = '
-
-
Res.zip
(13.35 KB, 下载次数: 1)
- mov [bx + 2], al
- ; DS:DX=待输出字符的地址
- mov ah, 09h
- mov dx, offset buf
- int 21h
-
-
-
- mov ax, 12
- push ax
- mov ax, offset str2
- push ax
- mov ax, offset buf
- push ax
- call _Align
- add sp, 6
-
- ; DS:DX=待输出字符的地址
- mov ah, 09h
- mov dx, offset buf
- int 21h
-
- xor ax, ax
- mov bx, offset score
- mov al, [bx + 1]
- push ax
- mov ax, offset buf
- push ax
- call _NumberToString
- add sp, 4
-
- ; DS:DX=待输出字符的地址
- mov ah, 09h
- mov dx, offset buf
- int 21h
-
- ; 换一行
- mov bx, offset buf
- mov al, 0dh
- mov [bx + 0], al
- mov al, 0ah
- mov [bx + 1], al
- mov al, '
- 下面这个C语言代码需要用tc编译
- mov [bx + 2], al
- ; DS:DX=待输出字符的地址
- mov ah, 09h
- mov dx, offset buf
- int 21h
-
-
- mov ax, 4c00h
- int 21h
- code ends
- end start
复制代码
下面这个C语言代码需要用tc编译
; /* dos 中使用 '
mov [bx + 2], al
; DS:DX=待输出字符的地址
mov ah, 09h
mov dx, offset buf
int 21h
mov ax, 12
push ax
mov ax, offset str2
push ax
mov ax, offset buf
push ax
call _Align
add sp, 6
; DS:DX=待输出字符的地址
mov ah, 09h
mov dx, offset buf
int 21h
xor ax, ax
mov bx, offset score
mov al, [bx + 1]
push ax
mov ax, offset buf
push ax
call _NumberToString
add sp, 4
; DS:DX=待输出字符的地址
mov ah, 09h
mov dx, offset buf
int 21h
; 换一行
mov bx, offset buf
mov al, 0dh
mov [bx + 0], al
mov al, 0ah
mov [bx + 1], al
mov al, '
下面这个C语言代码需要用tc编译
mov [bx + 2], al
; DS:DX=待输出字符的地址
mov ah, 09h
mov dx, offset buf
int 21h
mov ax, 4c00h
int 21h
code ends
end start
[/code]
下面这个C语言代码需要用tc编译
表示字符串结束 */
--i;
while(j <= i)
{
Swap(&buf[j], &buf);
++j;
--i;
}
}
void far Align(char *buf, const char *str, int len)
{
int i = 0;
while(str)
{
buf = str;
++i;
}
while(i <= len)
{
buf = ' ';
++i;
}
buf = '
mov [bx + 2], al
; DS:DX=待输出字符的地址
mov ah, 09h
mov dx, offset buf
int 21h
mov ax, 12
push ax
mov ax, offset str2
push ax
mov ax, offset buf
push ax
call _Align
add sp, 6
; DS:DX=待输出字符的地址
mov ah, 09h
mov dx, offset buf
int 21h
xor ax, ax
mov bx, offset score
mov al, [bx + 1]
push ax
mov ax, offset buf
push ax
call _NumberToString
add sp, 4
; DS:DX=待输出字符的地址
mov ah, 09h
mov dx, offset buf
int 21h
; 换一行
mov bx, offset buf
mov al, 0dh
mov [bx + 0], al
mov al, 0ah
mov [bx + 1], al
mov al, '
下面这个C语言代码需要用tc编译
mov [bx + 2], al
; DS:DX=待输出字符的地址
mov ah, 09h
mov dx, offset buf
int 21h
mov ax, 4c00h
int 21h
code ends
end start
[/code]
下面这个C语言代码需要用tc编译
; /* dos 中使用 '
mov [bx + 2], al
; DS:DX=待输出字符的地址
mov ah, 09h
mov dx, offset buf
int 21h
mov ax, 12
push ax
mov ax, offset str2
push ax
mov ax, offset buf
push ax
call _Align
add sp, 6
; DS:DX=待输出字符的地址
mov ah, 09h
mov dx, offset buf
int 21h
xor ax, ax
mov bx, offset score
mov al, [bx + 1]
push ax
mov ax, offset buf
push ax
call _NumberToString
add sp, 4
; DS:DX=待输出字符的地址
mov ah, 09h
mov dx, offset buf
int 21h
; 换一行
mov bx, offset buf
mov al, 0dh
mov [bx + 0], al
mov al, 0ah
mov [bx + 1], al
mov al, '
下面这个C语言代码需要用tc编译
mov [bx + 2], al
; DS:DX=待输出字符的地址
mov ah, 09h
mov dx, offset buf
int 21h
mov ax, 4c00h
int 21h
code ends
end start
[/code]
下面这个C语言代码需要用tc编译
表示字符串结束 */
}
[/code]
mov [bx + 2], al
; DS:DX=待输出字符的地址
mov ah, 09h
mov dx, offset buf
int 21h
mov ax, 12
push ax
mov ax, offset str2
push ax
mov ax, offset buf
push ax
call _Align
add sp, 6
; DS:DX=待输出字符的地址
mov ah, 09h
mov dx, offset buf
int 21h
xor ax, ax
mov bx, offset score
mov al, [bx + 1]
push ax
mov ax, offset buf
push ax
call _NumberToString
add sp, 4
; DS:DX=待输出字符的地址
mov ah, 09h
mov dx, offset buf
int 21h
; 换一行
mov bx, offset buf
mov al, 0dh
mov [bx + 0], al
mov al, 0ah
mov [bx + 1], al
mov al, '
下面这个C语言代码需要用tc编译
mov [bx + 2], al
; DS:DX=待输出字符的地址
mov ah, 09h
mov dx, offset buf
int 21h
mov ax, 4c00h
int 21h
code ends
end start
[/code]
下面这个C语言代码需要用tc编译
|
|