【问题标题】:MASM Sum of Ascii in a stringMASM 字符串中 Ascii 的总和
【发布时间】:2013-01-17 14:02:33
【问题描述】:
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。

【问题讨论】:

    标签: assembly ascii masm irvine32


    【解决方案1】:
    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
    

    解决了!!

    【讨论】:

      猜你喜欢
      • 2012-09-11
      • 1970-01-01
      • 2015-04-22
      • 1970-01-01
      • 2023-03-29
      • 2021-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多