我正在高中学习ASM 8086.
当我这样做时:
MOV BX,[SI]
SI + 1是BH还是BL?
谢谢 :-)
我认为这个问题很简单(也许是愚蠢的)可以回答,但经过近两个小时的谷歌搜索,我已经被淘汰了.我很确定我的问题是因为我只是不明白语法在做什么.
我正在看IDA中的一些反汇编代码,我不知道以下是做什么的:
mov dl, byte_404580[eax]
Run Code Online (Sandbox Code Playgroud)
如果我跳到byte_404580我发现.data:00404580 byte_404580 db 69h告诉我价值是0x69.但我不知道如何使用它.
让我提供此代码出现的上下文:
mov eax, 0x73 ; Move hex 73 to EAX
and eax, 0x0F ; Keep lower half of EAX
mov dl, byte_404580[eax] ; MAGIC
Run Code Online (Sandbox Code Playgroud)
由于上面的假设EAX最初是0x73,我得到DL= 0x76.我试过改变值EAX找到一些模式,但我还没弄清楚发生了什么.
我尝试了不同的方法,用Iphone在HTML5页面上显示.mov视频(在linux上的"ISO Media,Apple QuickTime电影"),但它无效.
我的代码是:
<video width="320" height="240">
<source src="test.mov">
</video>
Run Code Online (Sandbox Code Playgroud)
使用所有桌面浏览器(chrome,firefox ....),我可以显示视频.
任何的想法?
提前致谢.
我决定学习汇编编程语言.我正在使用这个.在底部练习它在一些指令中找到错误,其中之一是
mov cx, ch
Run Code Online (Sandbox Code Playgroud)
我在SO上发现了一些类似的问题,解释了如何实现它,但现在我想知道为什么禁止这个操作?
假设我在CH中有10d = 00001010b并且想要将其置于CL并同时擦除CH.mov cx, ch似乎这样做是因为它将10d显示为16bit 00000000 00001010并将其分别放入CH和CL(整个CX)
有什么问题,为什么给定的教程要求在这个表达式中找到错误?
我得到的点MOV,STA和LDA指示,但我不明白的是为什么有两种不同的工艺三种不同的指令?
STA 用于将数据从累加器复制到存储器位置,LDA 用于将数据从内存位置复制到累加器和MOV 用于在寄存器加寄存器和存储器之间复制数据.所以,我可以做什么STA,LDA指令也可以用MOV指令完成,对吧?
我对汇编语言有点新意,并且难以理解术语"字节等效".
它用于以下上下文: -
MOV指令有时会导致歧义.例如,查看语句:
MOV EBX, [MY_TABLE] ; Effective Address of MY_TABLE in EBX
MOV [EBX], 110 ; MY_TABLE[0] = 110
Run Code Online (Sandbox Code Playgroud)
目前尚不清楚是否要移动数字等效的字节或等效数字110.在这种情况下,使用类型说明符是明智的.
这个教程的链接就在这里
这将是一个很大的帮助,如果任何人都可以解释字节相当于术语,并用清晰的情况,即"类型说明符"可以派上用场提供.
.data
num dd 090F0433H
.code
mov ax, @data
mov ds, ax
mov ax, word ptr num
mov bx, word ptr num+2
mov cl, byte ptr num+1
Run Code Online (Sandbox Code Playgroud)
对于mov ax,单词ptr num,AH = 04,AL = 33.
为什么?有人可以向我解释如何解决这个问题吗?
我不明白之间的区别MOV我不明白和MOV ptr。
例如,在这段C代码中:
unsigned char x, y;
x = 2;
Run Code Online (Sandbox Code Playgroud)
汇编中的第二行是:
`MOV x, 2`
Run Code Online (Sandbox Code Playgroud)
但这段代码的第二行C:
tabbyte[0] = 15
unsigned char tabbyte[4]
Run Code Online (Sandbox Code Playgroud)
在装配中是:
MOV byte ptr tabbyte[0], 15
Run Code Online (Sandbox Code Playgroud)
两种汇编指令之间有什么区别以及何时应使用每种指令?
最近读了std::mov的C++,想到一个问题作为标题。
假设初始值如下:
int a= 1;
int b= 2;
Run Code Online (Sandbox Code Playgroud)
我认为:
情况一、
移动后(a <- b):
a= 2 , b=
Run Code Online (Sandbox Code Playgroud)
b 为空,因为已移动
情况2,
复制后(a <- b):
a=2 , b=2
Run Code Online (Sandbox Code Playgroud)
我知道C++的std::move是情况1
汇编语言的情况是mov(mov %b %a) 。?
这是我的问题。