[英]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.