汇编语言指令汇集及注意事项:
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