我仍然在學習如何使用NASM,因此在我的問題中可能會出現一些語法錯誤。無論如何,當我創建一個標籤,假設如何在NASM彙編器中打印以下內容?
buf: resb 16
然後,標籤buf
包含指向第一個被保留了16個字節的內存地址。然後,我想從這些16到最後一個任意字節打印的一切,比如,通過16打印字節13然後代碼會看起來像
mov eax, 4
mov ebx, 1
mov ecx, buf + 12
mov edx, 4 ;; for the 4 bytes to be read
int 80h
這是正確的嗎?那麼,什麼我其實想做的是
some_number: resb 1
mov [some_number], byte 3
mov eax, 4
mov ebx, 1
mov ecx, buf + 16 - [some_number]
mov edx, byte [some_number] ;; for the 3 bytes to be read, in this case
int 80h
,所以我想通過地址BUF +(16 - 3),這是BUF + 13.但是,這肯定是行不通的。讓我知道這是錯誤的還是有更好的方法來實現這一點。
順便說一句,some_number
將由一個任意進程確定,所以它會在每次我的程序運行時不同。
展示你是如何打印?沒辦法知道這些寄存器否則是正確的。 – TypeIA
對不起,我忘記了包含系統中斷。我想寫入標準輸出。 –