汇编指令汇集及注意事项001(未完)

汇编语言指令汇集及注意事项:
G:可以利用命令G+地址(下一条指令地址)跳到循环下一条指令的位置,

P:可以跳出循环。可以用命令u查看程序在内存存放的地址。也可以用p命令跳出循环,执行下一条指令。

d:命令可以查看内存情况,也可以d 1512:0000查看指定地址的内存情况;也可以(d 1512:0000 4)查看从1512:0000地址开始的连续4个内存单元的存储情况;

r:命令可以查看各个寄存器的情况
u:查看源程序;将寄存器中的机器指令翻译成汇编指令
e:在指定的内存地址中存放数据;如:e 2000:1000 23 42;将数据存放在2000:1000、2000:1001内存单元中
a:写入汇编指令
-------------
寄存器:
ax,bx,cx,dx代表通用寄存器
ds:代表数据的段地址,[0]代表数据段地址的偏移地址,[1],[2]......
cs:代表代码的段地址,
ip:代表代码的偏移地址
ss:代表栈的段地址
sp: 代表栈的偏移地址
-----------
指令:
mov ax,1;将数据1移动到寄存器中
add ax,2;寄存器ax中的数据与2相加,并将结果放入到寄存器ax中。
--
mov cx,3
s: add ax,ax
loop s
loop:循环指令
push:将数据压入栈顶;push ax;将寄存器中ax中数据送入到栈顶
pop:将数据从栈顶中取出;pop ax;将栈顶的数据从栈顶中取出,放入ax中
---------------
mov ax,2000h
mov ds,ax
设置程序中数据的段地址,不能直接使用mov ds,2000h,只能先将段地址存放到寄存器ax中,然后由寄存器ax送入到数据段地址寄存器ds中。
-----
mov ax,2000h
mov ds,ax
mov bx,6
mov al,[bx]
这里[bx]是代表偏移地址[6],不能直接在程序中使用mov al,[6],这样写的结果就是将6放入到寄存器al中,而不是将2000:0006h中内存单元中的数据放入到ax;
---------
一般程序 mov ax,2;2代表的是十进制的数;
如果要一个数值代表十六进制,就需要2h;
---------
程序中不能十六进制数不能以字母开头,比如
mov ax,ffffh,程序会报错,一定要在前面加数字,比如mov ax,0ffffh;这样就不会报错

原文地址:https://www.cnblogs.com/lazyli/p/10923917.html

时间: 2024-10-11 00:30:09

汇编指令汇集及注意事项001(未完)的相关文章

血的教训---工作中注意的事项(未完)

工作中注意的事项 1. 千万不要执行:yum -y remove python 或者 rpm -e python --nodeps 因为yum是使用python编写的,如果把python卸载了,则yum将不能再继续使用了 如果想自己编译安装新版本的python,也千万不要卸载掉centos自带的python,不用管它就好 2. 千万不要执行:iptables -F 因为如果你的filter表中的INPUT链默认的规则是所有的请求都拒绝的话,就完了 [[email protected] ~]# i

【嵌入式Linux+ARM】ARM体系结构与编程(ARM汇编指令)

自己的一些简单的总结,也是最常用的ARM汇编指令,之后也会不断的补充完善. 1. 汇编系统预定义的段名 .text    @代码段 .data   @初始化数据段 .bss    @未初始化数据段 需要注意的是,源程序中.bss段应该在.text之前. 2.定义入口点 汇编程序的缺省入口是 start标号,用户也可以在连接脚本文件中用ENTRY标志指明其它入口点. .text .global _start _start: 3 .word用法 word expression就是在当前位置放一个wo

[zhuan]arm中的汇编指令

http://blog.csdn.net/qqliyunpeng/article/details/45116615 一. 带点的(一般都是ARM GNU伪汇编指令) 1. ".text".".data".".bss" 依次表示的是 “以下是代码段”, “以下是初始化数据段”, “以下是未初始化数据段”. 2.".global" 定义一个全局符号,通常是为ld使用.比如经常看到的 .global _start 3.".

学习linux内核时常碰到的汇编指令(1)

 转载:http://blog.sina.com.cn/s/blog_4be6adec01007xvg.html 80X86 汇编指令符号大全 +.-.*./∶算术运算符. &∶宏处理操作符.宏扩展时不识别符号和字符串中的形式参数,如果在形式参数前面加上一个& 记号,宏汇编程序就能够用实在参数代替这个形式参数了. $∶地址计数器的值——记录正在被汇编程序翻译的语句地址.每个段均分配一个计数器,段内定义的所有标号和变量的偏移地址就是当前汇编地址计数器的值. ?∶操作数.在数据定义语句中,操作

8080汇编指令大全

8080汇编手册数据传输指令 ────────────────────────────── 它们在存贮器和寄存器.寄存器和输入输出端口之间传送数据. 1. 通用数据传送指令. MOV 传送字或字节. MOVSX 先符号扩展,再传送. MOVZX 先零扩展,再传送. PUSH 把字压入堆栈. POP 把字弹出堆栈. PUSHA 把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈. POPA 把DI,SI,BP,SP,BX,DX,CX,AX依次弹出堆栈. PUSHAD 把EAX,ECX,E

汇编指令大全

blt   小于跳转 tst r0,#02 bne sleep ldr  r1,#0 解释:位比较,先进行and运算,如果r0第2位不为1,则与的结果为0,设置标志位zero=1,继续下面的ldr指令.反之,zero=0,跳转到sleep执行. bne指令: 非零则跳转 个人总结:tst 和bne连用: 先是用tst进行位与运算,然后将位与的结果与0比较,如果不为0,则跳到bne紧跟着的标记(如bne sleep,则跳到sleep处). tst 和beq连用: 先是用tst进行位与运算,然后将位

ARM汇编指令的一些总结-转

ARM汇编指令的一些总结ARM汇编指令很多,但是真正常用的不是很多,而且需要认真琢磨的又更少了.比较有用的是MOV B BL LDR STR还是通过具体汇编代码来学习吧.@ disable watch dog timer mov r1, #0x53000000 //立即数寻址方式mov r2, #0x0str r2, [r1] MOV 没有什么好说的,只要掌握几个寻址方式就可以了,而且ARM的寻址方式比386的简单很多.立即数寻址方式,立即数要求以“#”作前缀,对于十六进制的 数,还要求在#后面

ARM汇编指令汇总

1.ARM汇编的格式:    在ARM汇编里,有些字符是用来标记行号的,这些字符要求顶格写:有些伪码是需要成对出现的,例如ENTRY和END,就需要对齐出现,也就是说他们要么都顶格,要么都空相等的空,否则编译器将报错.常量定义需要顶格书写,不然,编译器同样会报错.    2.字符串变量的值是一系列的字符,并且使用双引号作为分界符,如果要在字符串中使用双引号,则必须连续使用两个双引号.    3.在使用LDR时,当格式是LDR r0,=0x022248,则第二个参数表示地址,即0x022248,同

16位汇编第六讲汇编指令详解第第三讲

                                          16位汇编第六讲汇编指令详解第第三讲 1.十进制调整指令 1. 十进制数调整指令对二进制运算的结果进行十进制调整,以得到十进制的运算结果 2.分成压缩BCD码和非压缩BCD码调整 简而言之: 以前的时候你有个手表,里面的数字是九,如果加一个1就是0了,就会产生进位, 不过这个是10进制进位的,所以应该是 a了,但是a的话就出错了.所以我们就出来了这个调整指令直接变为零,然后进位,也就是16进制码当做10进制使用