gpt4 book ai didi

组装 atoi 函数

转载 作者:行者123 更新时间:2023-12-04 04:36:39 25 4
gpt4 key购买 nike

我正在制作用于组装的 atoi 函数。
无论我尝试什么都行不通,我也不知道为什么。

有谁知道是什么问题?

org 100h

mov si, stri ;parameter
call atoi ;call function
pop eax ;result
mov [broj], eax ;save
mov ah, 9 ;display (in ascii, because I don't have itoa function yet either)
mov dx, broj
int 21h

mov ah, 8
int 21h
int 20h

atoi:
mov eax, 0 ;stores result
mov ebx, 0 ;stores character
atoi_start:
mov bl, [si] ;get character
cmp bl, '$' ;till dollar sign
je end_atoi
imul eax, 10 ;multiplu by 10
sub bl, 30h ;ascii to int
add eax, ebx ;and add the new digit
inc si ;;next char
jmp atoi_start
end_atoi:
push eax ;return value
ret

stri db '1000$'
broj: db ?,?, '$'

最佳答案

问题是您在从 atoi 返回之前将 eax 压入堆栈。 . ret使用来自堆栈顶部的数据作为返回地址。
可能的解决方案:不要将 eax 压入堆栈,而只是从 atoi 返回答案在 eax。所以,你不需要 pop eax在代码的主要部分。

除此之外,您还需要确保 DS指向您的 stri 所在的代码段内存位置驻留。
要定期退出程序,请使用 int 21 函数 4Ch。在 MS DOS 2.0 之后不推荐使用 int 20。

关于组装 atoi 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19643371/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com