在汇编x86 MASM中连接字符串和数组的大小



我能够遍历数组并打印出值。然而,我还想打印出字符串"我的数组的长度是7",其中7是数组中的长度(元素的数量)。但是,我不能将字符串与数组的长度连接起来。请帮助。谢谢你。

INCLUDE Irvine32.inc 
.data
    myarray byte 23, 2, 3, 40, 5, 16, 7
    x byte 5 
    l dword lengthof myarray 
    msg1 byte "The length of my array is ",0
    msg2 byte "-------------------------------",0
    i byte 0
    .code 
    main PROC 
        mov eax, 0
        mov esi, offset myarray;
        mov ecx, l 

        myloop:
        mov al, [esi]
        call writedec 
        call crlf 
        inc esi 
        mov edx, OFFSET msg1 
        mov edx, l
        loop myloop
        call writestring
        call crlf 
        call crlf
        exit 
        main ENDP
        end main

我得到的结果如下:

23
2
3
40
5
16
7
"esimovarray.asm has stopped working"

请帮助。谢谢你。

我认为我们只需要改变几行代码的顺序:

INCLUDE Irvine32.inc 
.data
    myarray byte 23, 2, 3, 40, 5, 16, 7
    x byte 5 
    l dword lengthof myarray 
    msg1 byte "The length of my array is ",0
    msg2 byte "-------------------------------",0
    i byte 0
    .code 
    main PROC 
        mov eax, 0
        mov esi, offset myarray;
        mov ecx, l 
        myloop:
        mov al, [esi]
        call writedec 
        call crlf 
        inc esi 
        ;mov edx, OFFSET msg1         ;◄■■■ NOT HERE.
        ;mov edx, l                   ;◄■■■ NOT HERE.
        loop myloop
        mov edx, OFFSET msg1          ;◄■■■ RIGHT HERE!
        call writestring
        mov eax, l                    ;◄■■■ RIGHT HERE! MUST BE EAX.
        call writedec
        exit 
        main ENDP
        end main

最新更新