Assembly Nasm,引导加载程序切换前景色和背景色

嘿,我在写一个引导程序,使用nasm虚拟机等。总之,我用vram显示背景和字体颜色的变化,这些变化是由s、d、f、g键触发的。S将字体的颜色切换为背景色。我知道如何做到这一点,但我不知道正确的方法。vram设置为2个字节,第一个是字符,第二个是其属性。这些是背景色,然后是字符颜色。所以我需要把这些拿出来,换一下。这将切换字体颜色和背景颜色。我实际上如何使用代码来实现它 ; s key ;///////////////////////////////////////////////////////

Assembly 简单代码,应用程序已停止工作

我开始使用fasm学习asm,不幸的是,在编译下面的代码后,我得到错误:“应用程序已停止工作”,我使用Win7 64位。有人知道为什么它不起作用吗 format PE Console 4.0 include 'win32a.inc' push MB_OK push _tresc push _tytul push 0 call [MessageBoxA] push 0 call [ExitProcess] mov eax,0 ret _tytul db "Tytul",0 _tresc

Assembly 为什么要分解“printf”(“f”,6.4)`这么复杂?

第一个浮点参数被赋予xmm0、xmm1。。。在x86-64 ABI中。 没有直接将立即数(6.4的浮点表示)移动到xmm寄存器的指令,因此它首先放在堆栈上,然后移动到xmm0中。当然,另一个参数是格式字符串的地址 $1和1之间的差值第一个用作立即常数,第二个用作地址偏移量或地址。第一个浮点参数被赋予xmm0、xmm1。。。在x86-64 ABI中。 没有直接将立即数(6.4的浮点表示)移动到xmm寄存器的指令,因此它首先放在堆栈上,然后移动到xmm0中。当然,另一个参数是格式字符串的地址 $1和

Assembly 使用GDB(x86)检查堆栈

因此,我正在使用GDB调试一个x86程序。我在一个叫做func1的函数中 我想检查堆栈并查看传入堆栈的参数。因此,请执行以下操作: (gdb) info frame 0 Stack frame at 0x7fffffffe1f0: rip = 0x400e70 in func4; saved rip 0x40115a called by frame at 0x7fffffffe210 Arglist at 0x7fffffffe1e0, args: Locals at 0x7fffff

Assembly 读取/写入MASM程序集x86中的内存

我一直在努力自学一些基本的汇编(输出到控制台,算术)。我想知道如何在内存中存储某些东西(比如一个字节),以及如何从内存中读取它 理想情况下,不使用HLA的答案将受到赞赏(如果可能的话) 谢谢MOV说明就是您要找的 这就是从内存加载数据的方式 MOV AL,moffs8* Move byte at (seg:offset) to AL MOV AX,moffs16* Move word at (seg:offset) to AX MOV EAX,moffs32* Move doubleword a

Assembly 带ECX的汇编程序循环

正如我们所知,循环X指令将遍历X,直到ECX=0 我的问题-循环指令首先做什么:减小ECX,或者检查ECX==0 意思是,以下哪项是正确的 首先 第二 谢谢。第一个。来自英特尔手册2A: 每次执行循环指令时,计数寄存器递减,然后 已检查0。如果计数为0,则终止循环并执行程序 继续执行循环指令后的指令。如果计数不是零, 对目标(目标)操作数执行近跳转,该操作数可能是 循环开始时的指令 第一个。来自英特尔手册2A: 每次执行循环指令时,计数寄存器递减,然后 已检查0。如果计数为0,则终止循环并执行程

Assembly ARM指令ldrex/strex是否必须对缓存对齐的数据进行操作?

在Intel上,CMPXCHG的参数必须与缓存线对齐(因为Intel使用MESI实现CAS) 在ARM上,ldrex和strex在granuales独家保留地运营 需要明确的是,这是否意味着在ARM上操作的数据不必与缓存线对齐?在ARM体系结构参考手册A.3.2.1“未对齐的数据访问”中有这样的说法LDREX和STREX需要单词对齐。这是有道理的,因为未对齐的数据访问可以跨越独占保留颗粒。独占访问限制 以下限制适用于独占访问: •具有给定ID的独占写入的大小和长度必须与 具有相同ID的先前独占读

Assembly 什么';下面的汇编代码有什么问题?

获取输入字符串的代码 在windows计算机上使用nasm进行组装:nasm file.asm-o file.com ;read the string mov ah,0x0A ;read mov dx,buffer ;pointer to buffer int 0x21 ;newline mov ah,2 mov dl,10 int 0x21 mov dl,13 int 0x21 ;put $ sign at end of string mov bx,buffer+1 mov dx,b

Assembly 在布尔代数中,单位元是什么意思?

我正在阅读Randa Hyde()的汇编编程艺术,我在书中得出了以下结论:“P4关于•的标识元素是1,+是零,没有标识 但我不完全理解它的意思。有人能帮我理解这个句子吗?英语是我的第一语言,我通常可以阅读任何东西,但这有点令人困惑。我也知道普通代数,所以这对我来说并不是什么新鲜事。我知道普通ole代数中的加法恒等式和乘法恒等式是什么。当执行一个操作(加法、多重乘法)时,将恒等式元素作为操作数之一(0表示加法,1表示乘法),得到的结果是第二个操作数 x + 0 = x y * 1 = y 布尔代

Assembly 为什么结果为8000h且设置奇偶校验标志?

考虑以下代码: .586 .model flat,stdcall .data .code main PROC mov ax,0 push ax popf mov bx,7FFFh add bx,1 //the value of bx is 8000h, but the parity flay is 1,why? Ret main endp END main 假设第一个数字仍然被认为是符号būt,因此它被忽略。我假设还设置了溢出标志,这将使该假设正确。假设第一个数

Assembly 相对跳转超出范围0020h字节

我一直在尝试为“shell”编写一个基本的com文件。 我能够在NASM中组装相同的代码,只需稍加修改 但是,此代码不会在TASM中汇编! 我会遇到这样的错误:相对跳出范围 我在谷歌上查了一下,想了解一下跳跃的情况。然而,我找不到太多,除了把这个跳跃分成相对较短的跳跃的想法。 有没有更整洁的选择 代码如下: .model tiny CR equ 13d LF equ 10d TAB equ 09d .data prompt db CR,LF,"Input : ",0 tab_

Assembly 这段代码在汇编中是如何工作的

我正在学习x86上的汇编,遇到了一段代码,它实际上是将所有未初始化变量存储的bss部分归零 ;Zero the bss movw $__bss_start, %di movw $_end+3, %cx xorl %eax, %eax subw %di, %cx shrw $2, %cx rep; stosl 但不知道这段代码是如何工作的。有人能告诉我这里的情况吗,第一条指令是将bss段的地址存储到

Assembly 汇编语言,什么是专门的指令?

我目前正在学习汇编语言考试,在过去的一篇论文中遇到了这个问题 在组装中,什么是专用指令?发表 一个例子。CPU设计人员如何决定使用哪条指令 专攻 我被难倒了,我的讲师笔记也帮不上忙 我们所用的模拟器是与x86族类似的8位,以澄清。 < P>我认为“XLAT”(来自英特尔x86)是相当专业的。特别是那些没有太多需求的东西。 < P>我认为“XLAT”(从英特尔x86)是相当专业的。做一些特别的没有太多需求的事情。有趣。我以前没听说过,谷歌也没有显示任何内容(这个页面排在第三位)。但通过推理,我们可

Assembly 单个x86指令从一级缓存读取或写入的最大数据量是多少?

我刚刚读了一遍,它让我想起了这个问题。我不确定你的问题是否完全清楚,但我想你是在问,在执行一条x86指令时,一级缓存可以传输多少数据 如果是这样,这是一个不适定的问题。缓存结构,甚至缓存作为一个概念都不是x86规范的一部分。这意味着,答案完全取决于底层硬件。如果你有一个特定的处理器,你可以在数据表中找到答案。您要查找的是缓存块大小,因为缓存管理器喜欢一次写入和读取整个块。但是,x86扩展(如AVX和SSE)中有一些指令专门处理大内存事务,它们可以根据需要/方便地写入或读取缓存。您从未明确读取或写

Assembly 如何通过OllyDbg查看位于DS段中的值

我正在通过OllyDbg调试一个DLL,发现以下命令: LEA ECX,DWORD PTR DS:[ECX+EDX+8771F681] ECX是90C85FFF和EDX是13F5A9CE,因此最终地址是0x90C85FFF+0x13F5A9CE+0x8771F681=0x12C30004E。不幸的是,我不知道如何查看位于此地址的值。FPU窗口中的Ctrl-G表示“指定地址上没有内存” 提前感谢。请记住,LEA可用于任何计算,而不仅仅是地址(计算的实际结果永远不会被访问/取消引用)。此外,段替代

Assembly 罗德兰指示符号

Cpuid说我的系统上有rdrand,但rdrand指令抛出sigill。我在VmWare workstation 11中使用LinuxMint,我在谷歌上搜索了rdrand的工作站支持,他们说它从第9版开始启用。主机进程为i5-2550k,应支持rdrand。我能解决这个问题吗?以下是gdb列表: Breakpoint 1, 0x08048060 in _start () (gdb) x/5i $eip => 0x8048060 <_start>: mov $0x1

Assembly 汇编:8位芯片上的32位浮点指令

我曾试图帮助一位朋友在8位AVR芯片(Atmega8535)上编写一些汇编代码,但我的汇编知识非常贫乏,主要集中在现代芯片上,而不是一些过时的化石 因此,它归结为如何在8位体系结构中添加两个32位浮点的问题,该体系结构甚至不支持特定于浮点的指令集,如FADD ; 3.1415926 (pi) is given by 0x40 0x49 0x0F 0xDA ; 2.7182818 (e) is given by 0x40 0x2D 0xF8 0x54 对于感兴趣的用户,请参阅相关芯片的数据表。

Assembly 在nasm中向stdout写信

在这段代码中,我使用syscalls打印了一个数组: %include 'syscalls32.inc' section .bss section .data array dd 1,2,3,4,5 arraylen equ ($ - array) / 4 ; array length * 4 = number of elements section .text global _start: _start: mov esi, 0

Assembly 8051中LCD LM016中的旋转文本(组件)

编辑:此任务没有任何预定义指令,因此必须手动执行,以下是最终输出: 我必须在连接到微控制器8051的显示器LM016上向左和向右旋转文本,我希望我需要的文本向右旋转,然后向左旋转,使用大循环我做到了: 80 Address = T 81 Address = A 82 Address = N 83 Address = I C1 Address = 0 C2 Address = 2 80-83地址通过寄存器R0定向,C1-C2地址使用Rr1寄存器定向。每次重复,它都会增加两个寄存器的值,因此下次

Assembly 更新读取文件启动MIPS的位置

我正在尝试为MIPS中的位图编写一个RLE。我遇到的问题是,我只是在读取文件本身后才发现文件大小,而我似乎无法理解如何从文件的中间读取,使其递归 例如:我发现文件头中有X个字节,我知道它有54个字节。但后来我想跳转前1078个字节,从一个字到另一个字(4个字节,32位),或者至少能够创建variable.space将文件放入内存 li $v0, 14 # read from file move $a0, $s0 # fd of file to

Assembly 简化汇编程序

我目前有以下代码: .model small .stack 100h .data .code CLRSCR: mov ax,0003h int 10h ROWCOLINIT: mov dh,0 mov dl,0 MYLOOP: mov ax,dx mov ah,0 mov bl,2 div bl cmp ah,0

Assembly 如何在nasm 64位中跳转到寄存器间接

我在一个32位程序(一个Forth解释器)中有以下nasm代码 最后一条指令获取AX指向的地址并跳到该地址。 64位的等效代码不再汇编: MOV RBP, QWORD[USINI+(CW*(3))] ;Return stack ... LODSD ; NEXT JMP QWORD[RAX] 以NASM 64位指定此指令的正确方式是什么? 当然,这可能是nasm的一个缺陷,但我如何才能确定这一点呢 (在fa

Assembly 如何在汇编语言中获得其他颜色组合?

早上好/晚上好 我一直在想如何在汇编语言中获得靛蓝颜色 以下是我的示例代码: mov ah, 06h mov bh, 10h ; 8.Blue mov ch, 13 mov cl, 0 mov dh, 16 mov dl, 11 int 10h 提前谢谢 TL;博士 用这个。 很抱歉回答这么长,我今天晚上真的很无聊 不幸的是,在最初的CGA调色板中没有像靛蓝这样的颜色,它是在硬件中固定的,因此不能进行定制 CGA有4位颜色深度,即所谓的IRGB格式:第2位为红色,第1位为绿色,第0位为蓝色,

Assembly LEA在内部做什么?

说LEA指令可以用来做算术 据我所知,不是: inc eax mov ecx, 5 mul ecx mov ebx, eax 我只会写 lea ebx, [(eax + 1) * 5] LEA版本只是一条指令,而不是4条指令。然而,我不明白如果没有inc和mul,LEA是如何做算术的 LEA版本在任何方面都更快,还是LEA只是在后台运行原始指令 编辑:这个问题不是关于LEA的目的,而是它如何在内部工作 我不明白没有INC和MUL,LEA是怎么做算术的 关键是LEA只能做某些类型的算术:在计算

Assembly ARMV8汇编语言程序

您好,我正在尝试在程序集中创建一个程序: 从键盘上读取一个整数和一个字符,然后进行一些计算。这个节目是关于水的消耗。如果输入错误,程序应打印错误消息,然后终止。例如,如果我给第一个整数,并且是负数,那么程序应该打印错误并终止 虽然,它总是打印错误消息,我需要一些帮助。。。这是我的密码,如果有人能帮忙的话 .问题(错别字) .string“请输入使用类型(o/o e/e b/b):” .问题(u kivika) .string“请输入您已使用的水量:” .ScanfStr: .字符串“%c” .

Assembly 汇编程序的C代码

我学习C有一段时间了,我刚刚开始学习汇编程序 我有一个问题:当按下开关s1和s2时,将上述代码更改为同时打开LED 1和LED 2(否则关闭两个LED)(4标记) 代码如下: ; CONFIGURE PORTS FOR INPUT AND OUTPUT bis.b #0x01,&P1DIR ; set P1.0 as output bic.b #0x40,&P2DIR

Assembly 汇编语言中的数组

如果我必须把short int v[5]={1,2,3,4,5}翻译成assemblycode,我该怎么做?如果我在做这样的事情,这没关系: Enter 16,0 Mov ebp-4, 1 Mov ebp-8, 2 Mov ebp-12, 3 Mov ebp-16, 4 谢谢。您可以这样做,但正如@Ped7g所指出的,您需要限定符。v[0]在内存中要少20个字节,因此您必须以相反的顺序写入它们 enter 20, 0 ; At this point ESP is the

Assembly 为什么linux在entry\u SYSCALL\u 64函数中从rcx寄存器读取ip寄存器?

我正在学习linux中的系统调用处理过程 我发现,当用户进程运行SYSCALL指令调用系统调用时,会调用entry_SYSCALL_64函数 此函数用于保存中断帧 然而,当它推动ip中断帧时,它读取的不是rip而是rcx 这个密码正在被破解 ENTRY(entry_SYSCALL_64) UNWIND_HINT_EMPTY /* * Interrupts are off on entry. * We do not frame this tiny irq-off block w

Assembly 给寄存器赋值并加减法

我完全不明白这一点。 我需要编程,使用寄存器计算以下表达式: varA=(varA+varB)− (varC+varD),其中varA、varB等是变量。 为上述变量的EAX、EBX、ECX和EDX寄存器分配整数值。(也就是说,您可以对输入进行硬编码) 我的代码: ; AddTwo.asm - adds two 32-bit integers. ; Chapter 3 example .386 .model flat,stdcall .stack 4096 ExitProcess proto,

Assembly 在一些MOV、XOR、RCL和DIV指令之后查找寄存器值

请帮助我获取此汇编代码。我需要找到AX、BX和DX的值,但我不能这样做。我真的很感谢你的帮助。谢谢 MOV AX,0d RCL AX,1h MOV AX,e213h MOV BX,d123h XOR AX,BX XOR BX,AX XOR AX,BX RCL AX,10h ; Give AX= BX= MOV AX,215h MOV DX,2h MOV BX,8h DIV BX ; Give AX= BX= DX= INT 20h 你的问题似乎不清楚,但我试图回答

Assembly 如何在Y86-64中执行右移(或其他带有ADD+;但没有本机右移的玩具ISA)

我想在Y86-64上右移 要做左移位,我知道我需要乘以2^n,其中n是我们想要的位移位数,例如,如果我们想移位4,它是2^4=16,然后做一个加法循环来执行乘法,但我不确定右移位怎么做,我想我需要执行除法,但不确定如何实现 pcount_do: movq $0, %rax .L2: movq %rdi, %rdx shrq %rdi ret 考虑到Y86指令集未命中移位和除法,我会选择与此C代码等效的代码: uint64\u t lut[]{ 1. 2. 4. 8

Assembly BIOS总是无法执行磁盘操作

我目前正在编写一个引导加载程序,用于加载比引导扇区允许的时间更长的程序。但是,每次我运行程序(我在Virtualbox和QEMU中测试它)时,磁盘读取失败,磁盘重置也失败 引导加载程序设计为在扇区之后立即加载该扇区(这是一个FAT16卷,因此我在磁盘描述中将其设置为保留扇区),然后立即运行该程序。但是,磁盘读取总是失败(CF设置为1),磁盘重置也会失败。这在Virtualbox和QEMU中都会发生 这是我的引导扇区和第二扇区的完整代码: BITS 16 jmp strict short mai

Assembly emu8086上的Irvine32?重复声明:LPFILETIME

我正在尝试执行这段代码。它基本上只是将字符串反向复制到不同的位置 INCLUDE Irvine32.inc .data source BYTE " This is the source string", 0 target BYTE SIZEOF source DUP('#') .code main PROC mov esi, (OFFSET source) + (SIZEOF source) - 2 mov edi, OFFSET target mov ecx, SIZEOF sou

Assembly gdb中装配注释中所列地址的含义

在gdb会话中,如何计算程序集输出注释中的地址列表?举个例子,我目前正在接受以下指导: 0x0000555555556140 ? jmpq *0x7af5a(%rip) # 0x5555555d10a0 <strlen@got.plt> (gdb) p/z 0x5555555d10a0 - 0x0000555555556140 # commented address - current address $3 = 0x000000000007af60 指向

Assembly 如何正确读取程序集中的变量

经过大量的编辑、研究,我决定把它做好(我希望如此) 所以,我想从命令行获取一个浮点数 代码如下: format PE Console entry start include 'INCLUDE/win32ax.inc' include 'INCLUDE/win_macros.inc' section '.text' code readable executable start: finit fld [a] fld [b] fmulp fst [a] cinvoke

Assembly 正在初始化程序集中的bitarray对象

作为一个(初学者)练习,我正在尝试在汇编中实现类似类的东西。为此,我想创建一个大小为N的位数组,并进行init(size)、set(idx)、unset(idx)、get(idx)和print()的操作 我从init() bit_array_init: # all this has to do is clear N bits (%rdi) starting at address (%rsi) mov $-1, %rax # mask of all 1's mov %d

Assembly 请向我解释为什么寄存器没有被推到堆栈上

我正在做Jonathan Bartlett的《从头开始编程》一书中的许多任务之一 我目前正在执行第72页的任务: 阶乘函数可以非递归地编写。这样做 以下程序运行正常。我无法理解堆栈上的EBX、ECX和EAX寄存器的位置 为什么下面的代码不使用PUSHL和POPL指令在堆栈上放置寄存器 推送寄存器和它们神秘地存在于堆栈的某个地方有什么区别 asm堆栈就像其他任何区域一样是内存;一旦您保留了空间,就可以使用mov对其进行随机访问,并使用ESP作为基址寄存器(如果将其设置为帧指针,则使用EBP)进行寻

Assembly 使用单精度浮点数进行MIPS除法时出错

我试图在MIPS中实现两个数字的除法,我应该做以下工作:10.0/2.5 我正在尝试的代码低于1 .data float1 : .float 2.5 # declaring the floating values float2 : .float 10.0 # declaring the floating values .text main : l.s $f2, float1 # loading the floating values to regester l.s

Assembly 跳转到指令中间-在IA-32中

为什么IA-32使我们能够跳转到教学中间 当我在汇编程序中写作时,如何使用这种架构特性进行优化?(除了明显的情况外,我们希望将命令的编码保存在寄存器中,然后激活此命令)IA-32允许由于历史原因跳转到指令中间。x86指令集是8080使用的指令集上的连续层的结果,8080是第一个“x86”的前身,它将我们带回了70年代后期。当时,RAM非常昂贵,指令尽可能短是值得的,即使这意味着并非所有指令都具有相同的长度。目前,IA-32指令长度可以是1字节到12字节以上。这意味着任何地址都可能是指令的开始(没

Assembly 哪个CPU正在使用AT&;现在开始组装吗?

我只是好奇,AT&T的汇编语法现在是否只存在于软件中…语法是你写东西的方式,它与处理器的命令集或数据模型没有密切关系 例如,您可以在AT&T或英特尔语法汇编程序中为x86芯片编写完全相同的代码序列,它将以相同的方式运行—您将看到的唯一主要区别是,在AT&T语法中,目标是第二个参数,而在英特尔语法中,目标是第一个参数。两者都将编译为同一个很难读取的机器代码 汇编语言支持Visual C++编写(希望)短的ASM块使用英特尔语法,而GCC支持的汇编语言使用AT&T语法。 语法是如何写下来的,它与处理

Assembly 在字节、字和双字之间转换

所以我正在为x86汇编类做我的第一个作业,我已经迷路了(很好)。也许我读错了,但似乎我需要把一个字节转换成一个字,我能做到,把一个双字转换成一个字,我根本不知道怎么做。考虑到我已经环顾了很多地方,我猜我误解了我需要做什么。提示如下: 假设.data段中有以下定义: 编写一个相当于以下高级语言语句的汇编程序: 提前感谢;我不知道我在做什么(无论是在汇编还是其他方面,对此我深表歉意)。我认为高级语言会可怜地抱怨这一点。(但谁在乎HLL是做什么的呢?)你对把一个双字转换成一个字感到紧张是完全正确的。一

Assembly nasm插入的冗余DS段覆盖前缀?

出于教育目的,我正在使用x86反汇编程序。我一直在使用nasm来组装不同的指令 目前,我正在研究使用ModR/M字节的16位寻址形式。“英特尔64和IA-32体系结构软件开发人员手册:第2A卷指令集参考,A-M”(我认为我的版本已过时,但此信息仍应适用)指出,“默认段寄存器为包含BP索引的有效地址的SS,其他有效地址的DS” 因此,如果我理解正确,以下说明也应该完全相同: mov [bx], eax mov [ds:bx], eax 但是,当我使用nasm编译上述指令并查看生成的字节时,我得到

Assembly x86_64相对jmp操作数

我无法理解操作数FE FC FF如何生成0x9e7080 我尝试了一些数学sub/add到当前地址,因为它应该是相对跳转,但结果仍然不等于0x9e7080 有三件事需要考虑: FEFCFFFF以小尾数形式给出,表示一个十六进制值0xFFFFFCFE 该十六进制值是符号扩展的,因此是负数,十进制值为-770 您还必须添加指令占用的字节数 这导致0x009E737D+0xFFFFFCFE+5=0x009e7080,它等于0x009E737D-0x0000032+5=0x009e7080,需要考虑三件

Assembly 返回64位负数IA32程序集

我正在大学学习IA32位汇编,我正在努力返回64位数字。我必须执行(var8+var16)-(var32+var32x),并以64位整数显示结果。我得到了正确的结果,但数字应该是负数。你能看看这个,给我一些关于我做错了什么的见解吗 谢谢 这是我的密码: 职能.h: long function(void); 职能.s: .section .data .global var8 .global var16 .global var32 .global varx32 .global res .secti

Assembly 点在x86.s程序集文件中是什么意思

我在“.s”程序集中传递了一个包含点的表达式: p_off = .+1 点不是指令,也不是标签。请您解释一下,他们使用作为汇编程序是什么意思。这个代表 示例 程序计数器减去0x11111111 呼叫-0x11111111 第65页,.中的表示 示例 程序计数器减去0x11111111 呼叫-0x11111111 第65页,.这取决于哪个汇编程序。雅斯姆,纳斯姆,法斯姆,马斯姆,作为。。。都是不同的,我补充道。谢谢@RossRidge,是的,你是对的。这取决于哪个汇编程序。雅斯姆,纳斯姆,法斯姆

Assembly x86处理器汇编语言中的堆栈推送和弹出

我正在学习x86处理器的汇编语言,如果我回答正确,有两个问题我想让你们帮我看一下 关于示例代码运行时将发生什么,哪条语句是正确的 a。第6行的EDX将等于40 B程序将在第13行出现运行时错误时停止 C第6行的EDX将等于0 D程序将在第11行出现运行时错误时停止 我的回答是:(d)因为只有一个元素40被推入堆栈,而没有其他元素被弹出 与此链接中发布的第二个问题相同。我没有足够的声誉发表评论并询问此事。回答这个问题的人说(d),但我不明白为什么是(d),因为我从书中了解到,在执行pop eax后

  1    2   3   4   5   6  ... 下一页 最后一页 共 266 页