问题标题: 时 间 管 理 大 师——汇编重置版

1
0
已解决
薛乘志
薛乘志
初级启示者
初级启示者

运行代码,等待开始,10秒后按下任意键,比谁的误差更小~~~

这回没法作弊了吧~~~


#include <stdio.h>
#include <time.h>
#include <windows.h>
#include <conio.h>

asm(".TXT:\n"
    "	.ascii \"\\312\\261\\274\\344\\243\\272%04dms \\316\\363\\262\\356\\243\\272%04dms\\n\\0\"\n"
    ".YZM:\n"
    "	.ascii \"\\321\\351\\326\\244\\264\\372\\302\\353\\243\\272%X%X\\0\"\n"
   );

int main() {
	for (int i = 3; i >= 1; i--) {
		printf("将在%d秒后开始计时\n", i);
		Sleep(1000);
	}
	printf("开始!\n\n");
	clock_t a = clock();
	getch();
	clock_t b = clock() - a;
	printf("您的成绩:\n");
	asm(
	    "movl	$10000, %eax\n"
	    "	subl	-12(%rbp), %eax\n"
	    "	testl	%eax, %eax\n"
	    "	jle	.AA\n"
	    "	movl	$10000, %eax\n"
	    "	subl	-12(%rbp), %eax\n"
	    "	jmp	.BB\n"
	    ".AA:\n"
	    "	movl	-12(%rbp), %eax\n"
	    "	subl	$10000, %eax\n"
	    ".BB:\n"
	    "	movl	-12(%rbp), %edx\n"
	    "	movl	%eax, %r8d\n"
	    "	leaq	.TXT(%rip), %rcx\n"
	    "	call	printf\n"
	    "	movl	-12(%rbp), %eax\n"
	    "	andl	$58954, %eax\n"
	    "	orl	$289, %eax\n"
	    "	movl	%eax, %edx\n"
	    "	movl	-12(%rbp), %eax\n"
	    "	andl	$44849, %eax\n"
	    "	xorl	$675, %eax\n"
	    "	orl	$44, %eax\n"
	    "	movl	%edx, %r8d\n"
	    "	movl	%eax, %edx\n"
	    "	leaq	.YZM(%rip), %rcx\n"
	    "	call	printf\n"
	);
	return 0;
}

要是编译不了,下EXE版:https://github.com/xgugugu/cdtpoints/releases/download/1/time.exe

第一给100豆(需要截屏)

薛乘志在2022-07-25 16:12:11追加了内容

改标题


0
已采纳
高乐彤
高乐彤
新手天翼
新手天翼

你可以给豆子了

0
0
0
0
0
高乐彤
高乐彤
新手天翼
新手天翼

高乐彤在2022-07-25 17:39:08追加了内容

0
0
0
0
0
0
包思远
包思远
资深天翼
资深天翼

包思远在2022-07-26 09:35:16追加了内容

试了n次以后(n>40),才正正好误差0000ms

0
我要回答