标签: mov

反汇编命令8E C0

我需要拆解命令8E C0,你能帮帮我吗?

我已经做到了这个:

第一个字节8E = 10001110b它是mov sr,reg/mem

但我不知道如何处理第二个字节11000000

x86 assembly tasm mov

2
推荐指数
1
解决办法
348
查看次数

mov bx,ax和mov bh之间的速度是否存在差异啊?

是否有之间的速度差mov bx,ax,并mov bh,ah在16位MS-DOS应用程序的8086架构?

x86 assembly dos mov x86-16

2
推荐指数
1
解决办法
324
查看次数

MASM中的Push/Pop vs Mov

一个简单的问题,但我不知道答案.

原因是什么:

push wParam
pop char
Run Code Online (Sandbox Code Playgroud)

其中wParam,定义为WPARAM类型,char定义为WPARAM类型.

为什么我不能简单

mov char, wParam
Run Code Online (Sandbox Code Playgroud)

我有一种感觉它与地址有关,但我无法证明这一点.当我尝试使用该mov语句时,MASM吐出一个非描述性错误.

x86 assembly mov

2
推荐指数
1
解决办法
1683
查看次数

为什么在NASM中使用相对RIP寻址?

我有一个适用于Mac OS X的程序集hello world程序,如下所示:

global _main


section .text

_main:
    mov rax, 0x2000004
    mov rdi, 1
    lea rsi, [rel msg]
    mov rdx, msg.len
    syscall

    mov rax, 0x2000001
    mov rdi, 0
    syscall


section .data

msg:    db  "Hello, World!", 10
.len:   equ $ - msg
Run Code Online (Sandbox Code Playgroud)

我想知道这条线lea rsi, [rel msg]。为什么NA​​SM强迫我这样做?据我了解,它msg只是指向可执行文件中某些数据的指针,这样做mov rsi, msg会将地址放入rsi。但是,如果我将替换为lea rsi, [rel msg],则NASM会引发此错误(注意:我使用的是命令nasm -f macho64 hello.asm):

hello.asm:9: fatal: No section for index 2 offset 0 found
Run Code Online (Sandbox Code Playgroud)

为什么会这样?有什么特别之处leamov …

assembly nasm cpu-registers memory-address mov

2
推荐指数
2
解决办法
3874
查看次数

使用更好的ffmpeg将mov转换为mp4

我想将mov视频转换为mp4。当前,我通过以下调用通过bash使用ffmpeg进行管理:

ffmpeg -i input.mov -f mp4 -vcodec mpeg2video -acodec mp3 output.mp4
Run Code Online (Sandbox Code Playgroud)

是的,这行得通,但是质量很糟糕。我的50Mb压缩为一个方便的2.3 Mb文件。我尝试了仅更改容器的变体:

ffmpeg -i input.mov -f mp4 -vcodec copy -acodec mp3 output.mp4
Run Code Online (Sandbox Code Playgroud)

是的,也可以,但是文件仍然很大,因为我不压缩视频。所以我的50Mb保持50Mb。

是否有一种设置,可以在不完全缺乏质量的情况下进行轻微或逐步压缩?我的目标是输出大约10-20 Mb的文件。

我试过的

ffmpeg -i input.mov -f mp4 -vcodec -qscale:v 4 -acodec mp3 output.mp4

给我错误信息:

警告:库配置不匹配[...]未知编码器'-qscale:v'

使用的版本:ffmpeg版本2.8.11-0ubuntu0.16.04.1

mp4 ffmpeg mov

2
推荐指数
1
解决办法
5328
查看次数

8086汇编:MOV部分字符串变为变量

假设我有一串ascii字符,例如"652 + 346*779 =",我想将一些字符从这个变量移到另一个变量......

缓冲区是字符串(在本例中为"652 + 346*779 =")lengthofnum是有问题的数字的长度(在这种情况下,346的长度为3)A_ascii是我正在尝试传输字符串的变量" 346" .

我有一个根本不起作用的循环,我无法弄清楚我应该使用什么寻址模式.emu8086讨厌到目前为止我尝试过的所有内容,并且使用MOV指令给出了关于语法的错误

mov cx,lengthofnum
dumploop1:
    mov bx, offset buffer
    ;dump the number from buffer into A_ascii
    mov A_ascii[cx],[bx]+cx
loop dumploop1:
Run Code Online (Sandbox Code Playgroud)

我收到以下错误代码:

(672) wrong parameters: MOV  A_ascii[cx],[bx]+cx

(672) probably it's an undefined var: A_ascii[cx] 
Run Code Online (Sandbox Code Playgroud)

x86 assembly addressing mov

1
推荐指数
1
解决办法
7878
查看次数

内存到内存MOV - 正确的语法

我正在尝试使用ASM完成以下操作:

mov [00A30020], [ebx+50]

所以,我想要00A30020 mov的值ebx+50,但编译器说这是一个无效的声明.

x86 assembly mov

1
推荐指数
1
解决办法
234
查看次数

x86程序集中mov命令的有效性

我在课堂上了解到,将16位寄存器移到8位寄存器并不是一个有效的指令.例如,此命令无效:

mov al,bx
Run Code Online (Sandbox Code Playgroud)

但是有这样的指示:

mov bx,al
Run Code Online (Sandbox Code Playgroud)

或者2个寄存器的大小必须相等?如下所示:

mov al,bl        
mov bx,ax
Run Code Online (Sandbox Code Playgroud)

x86 assembly mov

1
推荐指数
1
解决办法
344
查看次数

从x86中的寄存​​器加载值所花费的时间

我目前正在从英特尔x86大会的Art中学习x86 .在它讨论不同指令类和操作码如何工作的部分中,它表示一个字节操作码被编码为iiirrmmm,其中三个is表示指令类,rr表示4个主寄存器,并且mmm可以是表示可选2字节存储器的许多值操作数的形式AX,[AX],[AX+XXXX],等.例如,101对应于[XXXX+BX],100对应于[BX]等,还提到在第一所采取在寄存器访问一个值的时间是零时钟周期,因为它是在芯片上实现.

但是,在解释指令完全工作所花费的时间时,为了弄清楚CPU计算内存操作数地址所花费的时间,它说:

在此输入图像描述

它不会分别是1和0周期,因为本书在开始时明确提到采用零时钟周期来访问寄存器中的值?怎么说用1个循环来获取值BX呢?

x86 assembly cpu-registers mov

1
推荐指数
1
解决办法
1510
查看次数

为什么来自段寄存器的 MOV 操作码没有设置其低位?它不是 8 位操作数大小,因此应设置 W 位

我遇到一个问题,我无法理解该指令MOV BX,CS的操作码,例如第一个字节是 10001100,其中前 6 位表示操作码,然后方向 1 位跟随 W。所以这是我的疑问为什么在操作码中它是 100011 而不是 100010,在 W 单元中为什么有 0 而不是 1,比如出于什么目的,或者有一些我应该小心的条件。

这是指令表示

如果有人能给我详细的答案,我将不胜感激。

当我尝试使用不止一种方法来解决时,我无法得到上图中所示的解决方案,并且我观看了很多视频,但没有找到可以澄清我的疑问的答案。

x86 assembly cpu-architecture mov instruction-encoding

1
推荐指数
1
解决办法
219
查看次数