linux - 将两个大于 10 的数字相加
问题描述
我正在尝试将两个一位数相加,但是当答案大于 10 时,它会给我一个错误“<”(不确定这意味着什么),如果答案低于 10,则它可以正常工作,例如 4 3 = 7。我已经浏览了我的代码,但我找不到任何错误,是我忘记添加的东西吗?任何帮助都会得到帮助:)!
汇编代码:
; Konstanter
cr equ 13 ; Vognretur
lf equ 10 ; Linjeskift
SYS_EXIT equ 1
SYS_READ equ 3
SYS_WRITE equ 4
STDIN equ 0
STDOUT equ 1
STDERR equ 2
; Datasegment
section .bss
siffer resb 4
; Datasegment
section .data
meld db "Skriv to ensifrede tall skilt med mellomrom.",cr,lf
db "Summen av tallene maa vaere mindre enn 10.",cr,lf
meldlen equ $ - meld
feilmeld db cr,lf, "Skriv kun sifre!",cr,lf
feillen equ $ - feilmeld
crlf db cr,lf
crlflen equ $ - crlf
; Kodesegment med program
section .text
global _start
_start:
mov edx,meldlen
mov ecx,meld
mov ebx,STDOUT
mov eax,SYS_WRITE
int 80h
call lessiffer
cmp edx,0
jne Slutt
mov eax,ecx
call lessiffer
; vellykket: edx=0, tall i ecx
cmp edx,0
jne Slutt
mov ebx,ecx
call nylinje
add eax,ebx
mov ecx,eax
call skrivsiffer
Slutt:
mov eax,SYS_EXIT
mov ebx,0
int 80h
; ---------------------------------------------------------
skrivsiffer:
; Skriver ut sifferet lagret i ecx. Ingen sjekk på verdiområde.
push eax
push ebx
push ecx
push edx
add ecx,'0'
mov [siffer],ecx
mov ecx,siffer
mov edx,1
mov ebx,STDOUT
mov eax,SYS_WRITE
int 80h
pop edx
pop ecx
pop ebx
pop eax
ret
; ---------------------------------------------------------
lessiffer:
push eax
push ebx
Lokke:
; Leser et tegn fra tastaturet
mov eax,SYS_READ
mov ebx,STDIN
mov ecx,siffer
mov edx,1
int 80h
mov ecx,[siffer]
cmp ecx,' '
je Lokke
cmp ecx,'0'
jb Feil
cmp ecx,'18'
ja Feil
sub ecx,'0'
mov edx,0
pop ebx
pop eax
ret
Feil:
mov edx,feillen
mov ecx,feilmeld
mov ebx,STDERR
mov eax,SYS_WRITE
int 80h
mov edx,1
pop ebx
pop eax
ret
; ---------------------------------------------------------
; Flytt cursor helt til venstre på neste linje
nylinje:
push eax
push ebx
push ecx
push edx
mov edx,crlflen
mov ecx,crlf
mov ebx,STDOUT
mov eax,SYS_WRITE
int 80h
pop edx
pop ecx
pop ebx
pop eax
ret
; End _start
解决方案
推荐阅读
- javascript - VueJS - 将数据从父组件传递到子组件
- matlab - Matlab parfor 未分类变量
- python - 如何将一个对象批量关联到具有 ManyToManyField 的多个对象?
- php - 如何实际使用 PHP Transliterator (Romanization) 将波斯语转换为英式英语
- ios - 如何让 LazyVGrid 不偷懒?
- javascript - 如何在网页中插入三角形状?
- mysql - MYSQL 平均最大值
- javascript - 使用 settimeout 单次尝试按钮单击在移动设备中不起作用
- redis - Redis ERR 未知命令 'BZPOPMIN'
- javascript - 更新值后返回子组件