Сборка Nasm Print Ascii для таблицы с использованием диапазона, определенного с помощью - PullRequest
0 голосов
/ 30 апреля 2020
section  .text
     global _start          ;makes symbol "_start" global (visible for linker) 
    _start:                 ;linker's default entry point         
    call    display     
    mov     eax,1           ;system call number (sys_exit)     
    int     0x80            ;call kernel 


; displays all valid printable ASCII characters (32-126), and new-line after. 
display: 
; prepare in memory string with all ASCII chars and new-line     
    mov     al,' '          ; first valid printable ASCII     
    mov     edi,     allAsciiChars     
    mov     ecx,     edi    ; this address will be used also for "write" int 0x80
nextChar:                                             
    mov     [edi], al
    inc     edi     
    inc     al
    cmp     al,     126     
    jbe     nextChar     
; add one more new line at end     
    mov     byte [edi], `\n` 
; display the prepared "string" in one "write" call     
    mov     eax, 4          ; sys_write, ecx is already set 
    mov     ebx, 1          ; file descriptor STDOUT     
    lea     edx, [edi+1]    ; edx = edi+1 (memory address beyond last char)     
    sub     edx, ecx        ; edx = length of generated string     
    int     0x80     
    ret  


section .bss allAsciiChars: resb 126-' '+1+1    ; reserve space for ASCII characters and \n

в основном решение для печати значений таблицы ascii ^^ однако мне также нужно распечатать их на основе диапазона, основанного на вводе, например INPUT 'G', INPUT 'L', который затем выводит каждый символ из " GL "отделен". " как если бы кто-то мог помочь, как OUTPUT "GHIJKL", он был бы очень признателен, я довольно новичок в сборке, и я использую Nasm, и я нашел это решение для таблицы ascii отсюда, кстати

...