如何从ASM中的字符串中间开始打印?

时间:2015-10-29 19:30:17

标签: linux assembly x86 nasm

我有一个作业,要求我从字符串中的某个位置开始打印字符(在字符串中的任何位置),我似乎无法弄清楚如何做到这一点。这是我到目前为止尝试过的代码

SYS_EXIT equ 1
SYS_READ equ 3
SYS_WRITE equ 4
STDIN equ 0
STDOUT equ 1

segment .bss
    curLen resb 1

section .text
    global main

main:
    mov ecx,2
    mov [curLen],ecx     ; Store starting position

    mov edx,10    ; Only print out 10 characters
    mov ecx,txt    ; Load string address into register
    add ecx,curLen    ; Add starting position to string address
    mov ebx,STDOUT ;
    mov eax,SYS_WRITE
    int 0x80
    jmp exit

exit:
    mov eax,SYS_EXIT
    int 0x80

section .data
    txt db 'This a string', 0x0

知道可能出现什么问题吗?理想情况下,上面的代码会打印出" is is a st&#34 ;,它会在字符串中开始两个字符并打印出以下10个字符。

谢谢!

0 个答案:

没有答案