【发布时间】:2018-03-31 01:03:20
【问题描述】:
.data
str: .ascii "aasembly language is fun./0"
.equ len, (. - str)
counta: .int 0
countb: .int 0
countc: .int 0
countA: .int 0
countB: .int 0
countC: .int 0
lowera: .ascii "a"
lowerb: .ascii "b"
lowerc: .ascii "c"
uppera: .ascii "A"
upperb: .ascii "B"
upperc: .ascii "C"
.text
.globl _start
_start:
lea str, %esi
mov $0, %ecx
mov lowera, %al
mov lowerb, %bl
mov lowerc, %cl
mov uppera, %dl
mov upperb, %ah
mov upperc, %bh
forloop:
cmpb (%esi), %al
je doescounta
cmpb (%esi), %bl
je doescountb
cmpb (%esi), %cl
je doescountc
cmpb (%esi), %dl
je doescountA
cmpb (%esi), %ah
je doescountB
cmpb (%esi), %bh
jne dontcount
doescountC:
incl countC
jmp dontcount
doescountb:
incl countb
jmp dontcount
doescountc:
incl countc
jmp dontcount
doescountA:
incl countA
jmp dontcount
doescountB:
incl countB
jmp dontcount
doescounta:
incl counta
dontcount:
incl %ecx
add $1, %esi
cmp $len, %ecx
jna forloop
mov counta, %eax
mov countA, %ebx
mov $1, %eax
mov $0, %ebx
int $0x80
.end
我正在尝试计算字符串中的所有 abc。它仅适用于 3 个计数。如果我有超过 3 个,它只会扫描字符串的第一个字母。
【问题讨论】:
-
出于礼貌,如果您发现您的帖子出现格式错误,请单击edit link 并使用工具栏上的代码格式按钮进行修复。至于你的问题,学习使用调试器。
-
这看起来不像 NASM,看起来像使用 AT&T 语法的 GNU 汇编器 (
as)。