如何从汇编中的字符串计算字符和行?

球状的

我想编写UNiX / LINUX命令的相应汇编代码。wc该代码仅供测试。

global main
extern printf

section .data
fmt:
    db "%ld %ld",10,0
msg:
    db 'CSE DU',10,'Dhaka',10,'Bangladesh',0
    ;db 'CSE DU',10,0
section .text
main:
    push rbp

    mov rcx , 0 ; rcx = number of charecter
    mov rbx , 0 ; rbx = number of line
lp:

    mov rax , [msg+rcx]
    inc rcx
    cmp rax , 0
    je exit ; jump if rax = 0 means EOF ; break
    cmp rax , 10
    jne lp ; jump if rax != 10 means not new line
    inc rbx ; increment rbx if new line found
    jmp lp ; continue

exit:
    dec rcx
    mov rdi , fmt
    mov rsi , rbx
    mov rdx ,rcx
    call printf

    pop rbp
    ret

该代码的结果为,0 23但正确的结果为2 23

如果我使用msg: db 'CSE DU',10,0(在代码中注释掉),那么结果是正确的,结果是1 7

我已经在Google中搜索过,但没有针对我的平台的任何解决方案。我正在使用Ubuntu(Linux),我的计算机是64位的,汇编程序是NASM并使用c printf函数。

我花了很多时间,但没有发现问题。如果有人发现,请帮助我。

Shift_Left

读取字符时,它们只有8位宽,因此只能读取和比较8位值

     mov     al, [msg+rcx]
     inc    rcx
     cmp     al, 0
     je     exit
     cmp     al, 10
     jne    lp
     inc    rbx
     jmp    lp

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

计算汇编字符串中的'0'

来自分类Dev

如何比较汇编中的字符串?

来自分类Dev

如何在汇编中更新字符串的字符?

来自分类Dev

如何计算字符串中的字母,数字和空格

来自分类Dev

如何计算多行字符串中的行

来自分类Dev

如何从多行字符串计算特定行中的项目

来自分类Dev

C ++中的汇编字符串和等效代码

来自分类Dev

如何在汇编中声明字符串变量?

来自分类Dev

汇编:如何在.asciiz中存储字符串?

来自分类Dev

如何在汇编中声明字符串变量?

来自分类Dev

如何计算向量中的字符串?

来自分类Dev

如何计算字符串中的数字?

来自分类Dev

如何计算字符串中的点?

来自分类Dev

替换汇编中的字符串

来自分类Dev

反转汇编中的字符串(TASM)

来自分类Dev

字符串到汇编中的整数

来自分类Dev

如何计算字符串的数字和字符?

来自分类Dev

计算字符串中的大写和小写字符

来自分类Dev

计算单词中的字符和子字符串

来自分类Dev

如何计算字符串中字符出现的次数?

来自分类Dev

如何按组计算字符串中字符的频率?

来自分类Dev

如何计算字符串中的字符?(Python)

来自分类Dev

如何计算字符串中字符的出现次数

来自分类Dev

我如何计算字符串中替换的字符?

来自分类Dev

如何计算字符串中不同的重复字符

来自分类Dev

如何使用该字符串的片段计算字符串中给定字符的概率?

来自分类Dev

如何从行中删除字符串

来自分类Dev

如何获取字符串MASM汇编中的字符的ascii代码

来自分类Dev

计算字符串中字符的出现