我有一个输出到LCD屏幕的汇编代码,我不知道如何使用汇编语言。但这是代码:
; Clicking button saves & builds using commands:
; nasm -f elf -g -F stabs evil.asm
; ld -o evil evil.o
section .data
Snippet: db "@E9>06G@Q:CN3C57I<)<)*"
SnipLen: equ $-Snippet
section .text
global _start
_start:
nop
mov ecx,Snippet
mov edx,SnipLen
mov eax,6
DoMore: add byte [ecx],af
inc ecx
inc eax
dec edx
jnz DoMore
mov eax,4
mov ebx,1
sub ecx,SnipLen
mov edx,SnipLen
int 80H
mov eax,1
mov ebx,0
int 80H
nop
我知道sub ecx,SnipLen
可能存在错误,因为它给了我不同的输出。修复前的输出为BEEP_BOOP
UNKNOWN_REGISTER
,修复该行后的输出为BEEP_BOOP
MALFUNCTION
。
答案 0 :(得分:1)
DoMore:添加字节[ecx],af
这是错误的,您正在调用不存在的寄存器节af。它必须是al。 3年后,此问题已解决,希望您在现在之前已解决此问题。 <3
答案 1 :(得分:0)
你最好用C来解决这个问题,因为它只是一个单行者:
printf(“FLAG:YOU'R_FUNNY_AREN'T_YOU?\ n”);
答案 2 :(得分:-2)
; Clicking button saves & builds using commands:
; nasm -f elf -g -F stabs evil.asm
; ld -o evil evil.o
section .data
Snippet: db "@E9>06G@Q:CN3C57I<)<)*"
SnipLen: equ $-Snippet
section .text
global _start
_start:
nop
mov ecx,Snippet
mov edx,SnipLen
mov eax,6
DoMore: add byte [ecx],al
inc ecx
inc eax
dec edx
jnz DoMore
mov eax,4
mov ebx,1
sub ecx,SnipLen
mov edx,SnipLen
int 80H
mov eax,1
mov ebx,0
int 80H
nop