问题标签 [mano-machine]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
assembly - 两个二进制数的除法
所以在这里我面临一个问题。我的指令集中只有 25 条指令。(没有乘法、除法、减法、递增指令)。现在,我正在尝试执行二进制除法。我的问题是,我怎么知道除数是否小于被除数以便将它们都减去(以 2 的补码形式)?
指令系统:
assembly - 在从变量加载值之前清除累加器
我一直在写一个这样的程序:
我相信它在大多数情况下是正确的,但不幸的是,没有一个非常可靠的 mano 汇编编译器来测试我的代码。无论如何,我唯一关心的是我在第 17 行有CLA指令。我这样做是为了将 DF1 设置为零,因为我们想在其中加载一个新的值1。这是正确的做法吗?
如果有人对我可能错过的错误或改进有任何其他批评或建议,请提供您的意见。
非常感谢任何和所有帮助/输入。谢谢。
assembly - 隐含寻址模式和立即寻址模式之间的区别?
隐含:操作数在指令定义中隐含指定。例子:CLA
, CME
, INP
.
它主要用于零地址(堆栈组织)和一地址(累加器组织)指令。
立即数:操作数在指令本身中指定,主要用于常量。示例:ADD R1,#3
,MUL R1,R2,#7
但问题来了如何检查指令:
1)PUSH 3
和
2)LD 7
第一个是零地址指令(基于堆栈),第二个是累加器指令。在这两条指令中,操作数都在指令本身中定义。哪种寻址模式更受欢迎,或者最能描述它们?
如何检查指令是隐含的还是即时的?
x86 上隐式操作数的更多示例:SAHF
、LAHF
和CPUID
.
来源:https ://en.wikipedia.org/wiki/CPUID
在汇编语言中,CPUID 指令不采用显式参数,因为 CPUID 隐式使用 EAX 寄存器(有时是 ECX)来确定在 EAX、EBX、ECX 和 EDX 中返回的信息。
来源:http ://www.felixcloutier.com/x86/LAHF.html
来源:http ://www.felixcloutier.com/x86/SAHF.html
使用示例:(来源:https ://www.slideshare.net/rbtaccess/flag-control )
更多示例包括CLC
、STC
和CMC
,它们分别清除、设置或翻转进位标志 CF。(CF 是 FLAGS 中的一个位,而不是整个寄存器。)