【发布时间】:2014-04-03 02:01:44
【问题描述】:
我仍在学习如何使用 NASM,所以我的问题中可能存在一些语法错误。无论如何,当我创建标签时,假设
buf: resb 16
然后,标签buf 包含指向保留的16 个字节中的第一个的内存地址。然后,我想打印从这 16 个字节中的任意字节到最后一个字节的所有内容,例如,打印字节 13 到 16。然后代码看起来像
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 将由任意进程确定,因此每次我的程序运行时都会有所不同。
【问题讨论】:
-
显示您的打印方式?否则无法知道这些寄存器是否正确。
-
对不起,我忘了包括系统中断。我想写入标准输出。