簡體   English   中英

通過索引訪問數組EDI點

[英]Accessing the array EDI points to by index

我需要將整數值轉換為以整數結尾的字符串,其中包含該整數的十六進制等效項。 這是我在Assembly中編寫的第一個程序,我想知道為什么我無法訪問edi按索引(8字節數組)指向的值,如下所示:

mov startNum, 23
lea esi, startNum
lea edi, bNumStr
mov bx, 16

mov ecx, 7

mov ax, [esi]
WhileNotZero:
        div bx                  
        mov [edi][ecx], dl
        sub ecx, 1
        cmp ecx, 0
ja WhileNotZero

如果我完全誤解了這里的內容,請告訴我。 任何將我推向正確方向的建議將不勝感激。

因為您將ECX = 7設置為目標,所以我們的目的是檢索8個十六進制數字,因此必須將EAX中dword中的值除以16。在進行此除法之前,您需要將EDX寄存器清零。
由於您需要一個以空值結尾的字符串,因此請首先編寫空值。

    mov  ebx, 16             ;Divider
    mov  ecx, 8              ;Number of digits
    mov  eax, [esi]          ;Dividend
    mov  [edi][ecx], ch      ;Null-termination, here CH is zero
WhileNotZero:
    dec  ecx
    xor  edx, edx            ;Divide EDX:EAX by EBX
    div  ebx                 ;Quotient in EAX, remainder in EDX (<16)
    ...
    mov  [edi][ecx], dl
    cmp  ecx, 0
    jne  WhileNotZero

...,您可以插入代碼以轉換為實際字符。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM