装配上的清洁控制台
Clean console on assembly
在 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
在 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