gpt4 book ai didi

linux - assembly 上的清洁控制台

转载 作者:太空宇宙 更新时间:2023-11-04 10:52:27 26 4
gpt4 key购买 nike

在 C 上是否存在类似于 system("cls"); 的程序集?

我正在使用 NASM 进行编译,并且正在使用 x86 linux。

更新 1:这是我修改后的代码以集成建议:

section .data

%define SC_write 4 ; eax = write(ebx, ecx, edx)
%define ESC 033q


MAX_PALAVRA equ 40

(...)

num1 dd 0
num2 dd 0
result dd 0
tamstr dd 0

section .bss
strnum resb MAX_PALAVRA
opc resb 2

section .text

global _start

refresh:
mov eax, ESC | ('[' << 8) | (BOTTOMROW << 16)
stosd
mov eax, ';0H' | (SI << 24)
stosd
mov edx, edi
mov edi, outbuf
mov ecx, edi
sub edx, ecx
xor ebx, ebx
lea eax, [byte ebx + SC_write]
inc ebx
int 0x80

_start:

mov eax, ds
mov es, eax

干杯

最佳答案

模仿终端 clear 命令在 .data 部分:

ClearTerm: db   27,"[H",27,"[2J"    ; <ESC> [H <ESC> [2J
CLEARLEN equ $-ClearTerm ; Length of term clear string

然后每当你想清除终端时:

mov eax, 4                          ; Specify sys_write call
mov ebx, 1 ; Specify File Descriptor 1: Stdout
mov ecx, ClearTerm ; Pass offset of terminal control string
mov edx, CLEARLEN ; Pass the length of terminal control string
int 80h

关于linux - assembly 上的清洁控制台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30247644/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com