Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 组装美元符号减去数字_Assembly_X86_X86 16_Tasm - Fatal编程技术网

Assembly 组装美元符号减去数字

Assembly 组装美元符号减去数字,assembly,x86,x86-16,tasm,Assembly,X86,X86 16,Tasm,假设我有以下代码,它会传递一个错误:预期的标量类型: 是否有任何方法可以在组装中执行与之等效的操作? 编辑:我在用8086的TASM,哪个汇编程序?dup看起来像是缅甸人。在Nasm中,b db$-$$-3将执行此操作。似乎不太可能要将此值放在一个字节中。我会使用dd或64位代码dq 我认为在Nasm手册的任何地方都找不到scalar这个词,但它的意思不是可重定位的值。$,与任何标签一样,是可重定位的,但两个标签之间的差异是一个标量值 与C语言不同,我们没有汇编语言标准委员会。汇编程序作者可以自

假设我有以下代码,它会传递一个错误:预期的标量类型:

是否有任何方法可以在组装中执行与之等效的操作? 编辑:我在用8086的TASM,哪个汇编程序?dup看起来像是缅甸人。在Nasm中,b db$-$$-3将执行此操作。似乎不太可能要将此值放在一个字节中。我会使用dd或64位代码dq

我认为在Nasm手册的任何地方都找不到scalar这个词,但它的意思不是可重定位的值。$,与任何标签一样,是可重定位的,但两个标签之间的差异是一个标量值


与C语言不同,我们没有汇编语言标准委员会。汇编程序作者可以自由地使用他们喜欢的任何语法——他们确实这样做了!在AT&T语法中,这不是$,而是一个完全不同的含义。在Masm中可能不起作用,但值得一试。你真的需要指定哪个汇编程序

它不是标量类型,因为db变量保存一个字节,$-3表示当前偏移量减去3。偏移量在16位模式下是一个字2字节,在32位模式下是一个双字4字节

您使用的是什么汇编程序?那么,您的目标处理器是什么?可能是因为$是一个字或dword值,而您正试图将其填充到一个字节中?我使用的是8086@FrankKotlerIf的turbo assembler。我所展示的对Tasm不起作用,请尝试将标签放在您希望$开始计数的任何位置。你已经表明这是可行的。我知道Nasm,主要是。。。
a db 10 dup(2)
b db $-3