assembly

    7热度

    1回答

    在我的8086汇编程序中执行一个循环时,如果您按下某个按键的次数太多,PC扬声器将开始发出哔哔声,此时会出现一个键盘按键阈值。这是令人讨厌的,它会让我的程序慢慢变慢,因为CPU必须跳出我的程序并花半秒钟驱动扬声器。 直到几个月前我开始在实际硬件上测试我的程序时,我甚至不知道这个问题存在。这个问题在DosBox中不是问题,甚至在DosBox内部安装了Dos 6.22。所以它必须是PC BIOS中内置

    1热度

    1回答

    我想解决我得到的练习。任务是从终端读取10个整数并以相反的顺序打印出来。要做到这一点,应该使用堆栈。我已经试过这样: %include "asm_io.inc" segment .data prompt db "Please enter a number: ", 0 segment .text global asm_main asm_main: enter 0,

    -1热度

    1回答

    我是新来的汇编,并试图迭代存储在内存中的字符串。我可以使用lea(加载有效地址)指令得到字符串的地址,但我现在想使用存储在寄存器中的那个地址。 有模lw其可以使用如下: lea string, %edx ; Load effective address of string into edx lw %edx, %eax ; Load eax with the value stored wher

    4热度

    1回答

    我被困在家庭作业上;我需要将二进制浮点数转换为小数点。我觉得我理解这个过程,但我没有得到正确的答案。这是我的思考过程。 我有二进制浮动:0 000 101 对于3位指数字段偏置为3:2^(3-1)-1 = 3 尾数变得1.101(基数为2) 指数位的值,0,减去指数位数3,为-3,所以尾数的小数点左移3位 0.001101 以10为底,即2^-3 + 2^-4 + 2^-6,等于0.203125或

    2热度

    1回答

    我正在学习与MASM64的x64程序集。我已经读过,前4个参数通过寄存器传递给过程:RCX,RDX,R9和R8。如果有更多的参数,我们通过堆栈传递它们。 但有一些令人困惑。 为什么这个代码不工作: sub rsp, 40h push 0 push FILE_ATTRIBUTE_NORMAL push CREATE_ALWAYS xor r8, r8 xor r9, r9 mov rdx

    0热度

    1回答

    我在写一个内联汇编代码来读取实时时钟。我正在加载寄存器编号(4)以读取到'dl'并将其加载到端口0x70。我正在尝试将这个寄存器值(4)读入al。欲了解更多信息 - RTC asm( "mov $4, %%dl;" "out 0x70, %%dl;" "in %%al, 0x71;" : : :"%al","%dl" ); 我正在上编译包含该代码的C文件下面的错误消息。 Assem

    1热度

    1回答

    当我们有这样的代码: main: MOV #SFE(CSTACK), SP ; set up stack ;;; some instructions ....... ; load the starting address of the array1 into the register R4 MOV.W #arr1, R4 ; load the st

    4热度

    1回答

    我们知道C++使用vftable来动态地决定应该调用哪个虚函数。当我们调用虚函数时,我想找出它背后的机制。我编译了下面的代码进行汇编。 using namespace std; class Animal { int age; public: virtual void speak() {} virtual void wash() {} }; class Ca

    3热度

    2回答

    我想写一个包含大型列表(大约4.8k字节)的程序。代码在汇编中,但具有更大的数据表(大约5.4k字节)。

    1热度

    2回答

    我正在为stm32l152C-discovery板执行arm cortex-m3的C代码,但是我发现main函数调用没有被推入堆栈。我已经分析了这个源的asm代码,但是我发现它是可以的。为了更好的理解,请看这里的C代码生成的汇编代码: main.elf: file format elf32-littlearm *SYMBOL TABLE: 00000010 l d .text 000000