|
发表于 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[i]);
++j;
--i;
}
}
void far Align(char *buf, const char *str, int len)
{
int i = 0;
while(str[i])
{
buf[i] = str[i];
++i;
}
while(i <= len)
{
buf[i] = ' ';
++i;
}
buf[i] = '
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编译
|
|