输出到LCD屏幕固定的汇编代码

时间:2016-03-09 08:35:22

标签: assembly x86

我有一个输出到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

3 个答案:

答案 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