[英]MASM Sum of Ascii in a string
INCLUDE Irvine32.inc
.data
fullName BYTE "Bob Johnson",0
nameSize = ($ - fullName) - 2
.code
main PROC
mov ECX,nameSize
mov ESI,OFFSET fullName
Sum:
mov EBX,[ESI+ECX]
add EAX,EBX
loop Sum
exit
main ENDP
END main
因此,我遇到一个问题,我想一次从字符串中读取一个字符并将其存储在EBX寄存器中,然后获取该字符的值并在EAX中保持一个连续的总和。
使用8位无符号算术将字符串字符的所有ASCII码加在一起。 溢出被忽略。 最终值是校验和。 例如,如果字符串为“ Joe”,则ASCII值为4A,6F,65。总和为11E。
INCLUDE Irvine32.inc
.data
fullName BYTE "Bob Johnson",0 ; String storing name
nameSize = ($ - fullName) ; Variable storing length of name
.code
main PROC
mov ECX,nameSize ; Set counter for loop
mov ESI,OFFSET fullName ; Set pointer at fullName variable
mov EAX,0 ; Clear the EAX register
mov EBX,0 ; Clear the EBX register
Sum: ; Loop
mov bl,[ESI + ECX - 1] ; Use the bl (8 bit register) to point at characters in the string.
add EAX,EBX ; Add the two registers together
loop Sum ; Loop
call DumpRegs ; Display results
exit
main ENDP
END main
解决了问题!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.