导航:首页 > 程序命令 > 汇编命令吗

汇编命令吗

发布时间:2022-05-12 01:49:42

‘壹’ 汇编语言指令大全,要详细的 !!!!

一、数据位传送指令:

1、MOV C, bit ;bit 可直接寻址位 C←(bit)

2、MOV bit,C ;C 进位位 (bit) ← C

二、位变量修改指令:

1、CLR C ; 将C=0

2、CLR bit

3、CPL C ; 将C求反再存入C

4、CPL bit ; 将bit求反再存入bit

5、SETB C ; 将C=1

6、SETB bit ; (bit) ← 1

三、位变量逻辑指令:


ANL C, bit ANL C, bit ORL C, bit ORL C, bit

‘贰’ 汇编命令

这是32位汇编
mov ecx 00000037 //ecx=00000034 把ecx寄存器的值设为37 相当于c语言的赋值语句 如 int a = 37
Cmp byte ptr[ecx],00 //ecx=0012A444 cmp相当于不保存结果的sub减法指令 把ecx 地址里的内容与00相比较
Mov dl,[ecx+eax+08] //ecx=0012A43C EAX=00000000 与第一句差不多,把[ecx+eax+08] 里的值传给dl,dl寄存器是八位的
Mov [ecx+eax+08],dl //ecx=0012A43C EAX=00000000 与上一句相对应,把dl里的值传送给内存[ecx+eax+08]
下面的都差不多了,自己好好理解一下吧
Cmp byte ptr [edx+ecx],00 //edx=0012A444 ecx=00000000
Mov cl,[ecx+ebp+08] //ecx=00000008 ebp=0012A43C
Mov al,[eax+ecx+08] //eax=0012A408 ecx=00000000
Mov bl,[ecx+eax] //ecx=00000000 eax=0012A444

‘叁’ 汇编语言中,p命令和t命令有什么区别

在汇编语言程序调试的DEBUG环境中,有三个执行指令的命令:
.
T命令:单步执行,每次只执行一条代码语句,遇到子程序后进入子程序逐条执行指令;
.
P命令:类似T命令,若有子程序,直接执行完子程序全部指令而不是逐条执行指令,在遇到循环指令时,会直接执行至CX递减至0;
.
G命令:多步执行,可以跟地址和断点,即格式为 G[=address] [breakpoints],运行到[breakpoints]指定位置的指令后暂停,若不加参数则从当前IP运行到程序结束。

‘肆’ 汇编语言jnc命令有什么用处

转移指令。

意思是CF=0,则跳转,表示的是AX大于或等于0的时候转移到EXIT处,所以JNC也可以看成是加法没有进位,减法没有借位的时候转移。

在汇编语言中,用助记符代替机器指令的操作码,用地址符号或标号代替指令或操作数的地址。在不同的设备中,汇编语言对应着不同的机器语言指令集,通过汇编过程转换成机器指令。特定的汇编语言和特定的机器语言指令集是一一对应的,不同平台之间不可直接移植。

(4)汇编命令吗扩展阅读:

由于汇编指令系统庞大,因而需构建指令系统体系,其指令数量庞大,格式复杂,可记忆性差等。指令中最难的是指令所支持的寻址方式,其实质就是指令中操作数如何获取。对于处理器而言,就是如何找到他所需的数据。

但对于计算机底层的汇编语言而言,这种寻址方式将涉及大量的计算存储格式,与 复杂的存储管理方式紧密相关,因而难以理解。最后,汇编指令还关系到如何影响标志位,但处理器标志位非常复杂,因而对其机制掌握就比较困难。

‘伍’ 主要的汇编指令有哪些

LDR 和STR——用于字和无符号字节
指令格式:
LDR/STR{cond}{T} Rd,<地址>
LDR/STR{cond}B{T} Rd,<地址>

LDR{cond}{T} Rd,<地址> 加载指定地址的字数据到Rd中;
STR{cond}{T} Rd,<地址> 存储Rd中的字数据到指定的地址单元中;
LDR{cond}B{T} Rd,<地址> 指令加载指定地址的字节数据到Rd的的最低字节中(Rd的高24位清零);
STR{cond}B{T} Rd, <地址> 指令存储Rd中的最低字节数据到指定的地址单元中。
T为可选后缀,若有T,那么即使处理器是在特权模式下,存储系统也将访问看成处理器是在用户模式下,T 在用户模式下无效,不能与前索引偏移一起使用T。

地址部分可用的形式有4种:

零偏移(zero offset) [Rn] ,Rn的值作为传送数据的地址。如:
LDR R0,[R1];
前索引偏移(pre-indexed offset) [Rn,Flexoffset]{!} 在数据传送之前,将偏移量Flexoffset加到Rn 中。其结果作为传送数据的存储器地址。若使用后缀“!”,则结果写回到Rn 中,且Rn 不允许是R15,如:
LDRB R0,[R1,#8]
LDR R0,[R1,#8]!
程序相对偏移(program relative) label(label 必须是在当前指令的土4KB 范围内) 。
程序相对偏移是前索引形式的另一种版本。从PC 计算偏移量,并将PC 作为Rn 生成前索引指令,不能使用后缀“!”,如:
LDR R0,place ;
place地址装入R0
后索引偏移(post-indexed offset) [Rn],Flexoffset。在数据传送后,将偏移量Flexoffset 加到Rn 中,结果写回到Rn,Rn 不允许是R15,如:
LDR R0,[R1],R2,LSL#2 ;
将存储器地址为R1 的字数据读入寄存器R0,并将新地址R1+R2×4写入R1。
偏移量Flexoffset可以是下两种形式之:
1) 取值范围是-4095 到+4095 的整数的表达式,经常是数字常量,如:
STR R5,[R7],#--8
2) 一个寄存器再加上移位(移位由立即数指定),如:
{-}Rm{,shift}
其中:
- :可选负号。若带符号“一”,则从Rn 中减去偏移量。否则,将偏移量加到Rn 中。
Rm :内含偏移量的寄存器。Rm 不允许是R15。
Shift:Rm 的可选移位方法。可以是下列形式的任何一种:
ASR n :算术右移n 位(1<=n<=32)
LSL n :逻辑左移n 位(1<=n<=31)
LSR n :逻辑右移n 位(1<=n<=32)
ROR n :循环右移n 位(1<=n<=31)
RRX :循环右移1 位,带扩展。
AND―――――逻辑”与”操作指令
指令格式:

AND{cond}{S} Rd,Rn,operand2
AND指令将操作数operand2 与Rn 的值按位逻辑”与”,结果存放到目的寄存器Rd 中。若设置S,则根据运算结果影响N、Z位,在计算第二操作数时,更新C位,不影响V位(指令ORR、EOR、BIC 对标志位的影响同AND 指令)。
指令示例:
ANDS R1,R1,R2 ;R1=R1&R2,并根据运算的结果更新标志位
AND R0,R0,#0x0F ;R0=R0&0x0F,取出R0最低4位数据。

ORR―――――逻辑”或”操作指令
指令格式:ORR{cond}{S} Rd,Rn,operand2 ORR指令将操作数operand2 与Rn 的值按位逻辑”或”,结果存放到目的寄存器Rd 中。指令示例:
ORRS R1,R1,R2 ;R1=R1|R2,并根据运算的结果更新标志位
ORR R0,R0,#0x0F ;R0=R0|0x0F,将R0最低4位置1,其余位不变。

BIC―――――位清除指令
指令格式:
BIC{cond}{S} Rd,Rn,operand2
BIC指令将Rn 的值与操作数operand2 的反码按位逻辑”与”,结果存放到目的寄存器Rd 中。指令示例:BIC R0,R0,#0x0F ;将R0最低4位清零,其余位不变。

CMP―――――比较指令
指令格式:
CMP{cond} Rn,operand2
CMP指令用Rn的值减去操作数operand2 ,并将结果的状态(Rn 与operand2比较是大、小、相等)反映在CPSR中,以便后面的指令根据条件标志决定程序的走向。CMP指令与SUBS指令完成的操作一样,只是CMP指令只减,不存结果。
指令示例:
cmp R0,R1 ;比较R0,R1
beq stop ;R0=R1跳到stop
blt less ;R0<R1跳到Less

.
.
.

Less:
.
.
.
Stop:
.
.
.
SUB―――――减法运算指令
指令格式:
SUB{cond}{S} Rd,Rn,operand2 SUB指令用Rn 的值减去操作数operand2 ,并将结果存放到目的寄存器Rd 中。 指令示例:
SUBS R1,R1,R2 ;R1=R1-R2,并并根据运算的结果更新标志位
SUBGT R3,3,#1 ;大于则 R3=R3-1
SUB R0,R2,R3,LSL#2; R0=R2-(R3<<2)

ARM分支指令
助记符

说明

操作

B{cond} lable
分支指令

PC← lable

BL{cond} lable
带链接的分支指令

LR← PC-4 ,PC←lable

BX{cond} Rm
带状态切换的分支指令

PC← Rm,切换处理器状态

指令的条件码
条件码 助记符后缀 标志 含义
0000 EQ Z置位(Z=1) 相等
0001 NE Z清零(Z=0) 不相等
0010 CS C置位 无符号数大于等于
0011 CC C清零 无符号数小于
0100 MI N置位 负数
0101 PL N清零 整数或0
0110 VS V置位 溢出
0111 VC V清零 未溢出
1000 HI C置位且Z清零 无符号数大于
1001 LS Z置位且C清零 无符号数小于等于
1010 GE N等于V(N=V=1或N=V=0) 带符号数大于或等于
1011 LT N不等于V 带符号数小于
1100 GT Z清零且N等于V 带符号数大于
1101 LE Z置位或N不等于V 带符号数小于或等于
1110 AL 忽略 无条件执行

;GPIO寄存器宏定义
GPFCON EQU 0x56000050
GPFDAT EQU 0x56000054
GPFUP EQU 0x56000058

EXPORT LEDTEST
AREA LEDTESTASM,CODE,READONLY ;该伪指令定义了一个代码段,段名为LEDTESTASM,属性只读

LEDTEST
;设置GPF4-GPF7为output
ldr r0,=GPFCON
ldr r1,[r0]
bic r1,r1,#0xff00
orr r1,r1,#0x5500
str r1,[r0]

;禁止GPF4-GPF7端口的上拉电阻
ldr r0,=GPFUP
ldr r1,[r0]
orr r1,r1,#0xf0
str r1,[r0]

looptest
;将数据端口F的数据寄存器的地址附给寄存器r2
ldr r2,=GPFDAT

ldr r3,[r2]
bic r3,r3,#0xf0
orr r3,r3,#0xb0
str r3,[r2] ;GPF6 output 0
ldr r0,=0x2fffff
bl delay ;调用延迟子程序

ldr r3,[r2]
bic r3,r3,#0xf0
orr r3,r3,#0x70
str r3,[r2] ;GPF7 output 0
ldr r0,=0x2fffff ;初始计数值
bl delay ;调用延迟子程序

ldr r3,[r2]
bic r3,r3,#0xf0
orr r3,r3,#0xd0
str r3,[r2] ;GPF5 output 0
ldr r0,=0x2fffff
bl delay ;调用延迟子程序

ldr r3,[r2]
bic r3,r3,#0xf0
orr r3,r3,#0xe0
str r3,[r2] ;GPF4 output 0
ldr r0,=0x2fffff
bl delay ;调用延迟子程序

b looptest
delay
sub r0,r0,#1 ;r0=r0-1
cmp r0,#0x0 ;将r0的值与0相比较
bne delay ;比较的结果不为0(r0不为0),继续调用delay,否则执行下一条语句
mov pc,lr ;返回

END ;程序结束符

‘陆’ 汇编指令test的用法

test属于逻辑运算指令,其功能为功能执行BIT与BIT之间的逻辑运算和测试功能(两操作数作与运算,仅修改标志位,不回送结果)。

Test对两个参数(目标,源)执行AND逻辑操作,并根据结果设置标志寄存器,结果本身不会保存。EST AX, BX与AND AX, BX命令有相同效果。TEST语法规格:TEST r/m,r/m/data。其影响标志包括:C,O,P,Z,S(其中C与O两个标志会被设为0)。

test的运用举例:利用Test指令测试一个位,例如寄存器:

test eax, 100b;/b后缀意为二进制/

jnz ******;/如果eax右数第三个位为1,jnz将会跳转/

jnz跳转的条件非0,即ZF=0,ZF=0意味着零标志没被置位,即逻辑与结果为1。

(6)汇编命令吗扩展阅读

与汇编指令test功能相仿的还有cmp指令,CMP属于算术运算指令,其功能为功能为比较两个值(寄存器,内存,直接数值),与Test指令的测试功能相仿,其语法格式为CMP r/m,r/m/data,影响的标志位包括C,P,A,Z,O。

CMP比较.(两操作数作减法,仅修改标志位,不回送结果)。cmp实际上是只设置标志不保存结构的减法,并设置Z-flag(零标志)。零标志很像carry,也是内部标志寄存器的一位。

‘柒’ 汇编指令和汇编语言指令之间的区别是什么

汇编指令,assembler directives,亦称伪指令,用于指示汇编程序如何汇编源程序,不参与汇编代码生成。
汇编语言指令,assembly language instructions,可供执行的程序代码。
记住directives和instructions二者区别就明晰了。

‘捌’ 汇编指令EQU的作用

EQU是等值命令。

汇编指令EQU的作用如下。

1、用符号名代表字符串 。用一个具有一定含义的符号名定义某一个较长的字符串,在随后的程序中就用该符号名。

2、用符号名关键字或指令助忆符 。用一个(组)程序员自己习惯的符号名来代替汇编语言中的关键字或指令助忆符。

(8)汇编命令吗扩展阅读:

汇编其他指令

SHL逻辑左移

SAL算术左移(=SHL)

SHR逻辑右移( 每位右移, 低位进 CF, 高位补 0)

SAR算术右移(每位右移, 低位进 CF, 高位不变)

ROL循环左移

ROR循环右移

CBW字节转换为字(把AL中字节的符号扩展到AH中去)

CWD字转换为双字(把AX中的字的符号扩展到DX中去)

CWDE字转换为双字(把AX中的字符号扩展到EAX中去)

CDQ双字扩展(把EAX中的字的符号扩展到EDX中去)

阅读全文

与汇编命令吗相关的资料

热点内容
玄关pdf 浏览:608
程序员学习论坛 浏览:939
程序员的毒鸡汤怎么做 浏览:547
安卓怎么降级软件到手机 浏览:280
云与服务器入门书籍推荐产品 浏览:635
delphi编程助手 浏览:761
电脑遇到服务器问题怎么办 浏览:514
加工中心编程结束方法 浏览:295
了解什么是web服务器 浏览:139
面向对象的编程的基本特征 浏览:717
php定时执行任务linux 浏览:786
php数组中删除元素 浏览:724
萤石云服务器视频 浏览:269
防火墙配置服务器热备的虚拟地址 浏览:188
linux安装xdm 浏览:736
java计算12 浏览:249
大金空调摆动式压缩机 浏览:453
新的云服务器如何设置首页 浏览:687
javastring字符位置 浏览:197
银河麒麟字体库存在哪个文件夹 浏览:957