- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
8086汇语言学习笔记
8086汇编语言学习笔记
一、debug的使用,模拟8086的情况
d 7c0:0,查段地址为7c0,偏移地址为0的内存中的数据,是十六进制表示的数
d 9000:0,查段地址为9000,偏移地址为0的内存中的数据,是十六进制表示的数
r,会显示所有寄存器中的值,比如ax,bx,cx,dx,cs,ip等
r cs,根据提示可以调整cs寄存器的值
a 1000:0 ,根据提示,可以从1000:0处开始输入汇编指令,比如mov ax,1c9aH,或者mov ax,126
e 1000:0000 01 02 03 04,表示将01 02 03 04顺序填入1000:0000表示的内存处
u 1000:0,可以查1000:0内存处的数据及其对应汇编指令
t,执行cs:ip寄存器所指的指令
g 0012,从cs:ip执行到cs:0012处,中间不停顿
p ,遇到loop循环,则一次把所有循环执行完再退出。
二、各寄存器的作用
1、ax,bx等一般寄存器,可暂存数据
2、cs,ip
下一条要执行的指令存储在cs为段地址,ip为偏移地址的内存中
3、ds
数据段寄存器,比如mov al,[0],表示将ds:0这个内存中的数字传入al中。
要将内存10000H中的数传入al中,则应该这样:
mov ax,1000
mov ds,ax ,因为不能直接mov ds,1000
mov al,[0],寄存器al若为16位,则内存中有一个字要移入al,要是为32位,则内存中有2个字要移入al
mov bl,[ax],将ds:ax表示的内存的字节传入bl寄存器中
mov bx,[ax],将ds:ax表示的内存的字传入bx寄存器中
4、ss,sp
ss存储堆栈段的段地址,sp存储堆栈段的偏移地址,push和pop指令涉及到的内存就是ss:sp指向的内存
5、cx 计数寄存器,主要是存储循环程序要循环执行的次数。存放程序在内存中的长度?
6、注意段寄存器cs,ds,ss均不能直接将数据输入。
7、在mov ax,[si+di]这个[。。。]省略号只能填入如下四个寄存器:bx,si,di,bp,其余的比如ax,cx,dx均是错误的,要是ss,cs,ds,更是错误的。
在[。。。]中使用bp,则段地址默认为ss,显性指示段地址除外。
三、内存相关部分参见二
1、
a、mov al,[ax],其中的al指明是字节操作,即一次只移动一个字节的内存
mov ax,[0],其中的ax指明是字操作,即一次移动一个字的内存
b、若没有寄存器,则可以使用word ptr标明是字操作,这是在masm中的用法,比如 inc word ptr ds:[0]
用byte ptr标明这是字节操作,这是在masm中的用法,比如 inc byte ptr ds:[0]
c、push [1000H],不用指明,直接进行字操作
四、各种指令
1、mov,移动,比如mov ds,ax将ax中的数据移入ds中
2、add,加法,比如add ax,bx,将bx中的值与ax中的值相加并存入ax中
3、sub,减法,比如sub ax,bx,将ax中的值减去bx中的值并存入ax中
4、push,入栈,比如push ax,将ax寄存器中的值压入堆栈ss:sp指向的内存当中,并把sp的值改为sp-2(这是在8086当中,因为ax是16位寄存器,而内存单元为8位,因此一个寄存器的值要用两个内存
单元来存放)
5、pop,出栈,比如pop ax,将ss:sp指向的内存的值送入ax中,并把sp的值改为sp+2
pop [0],将ss:sp内存中的数据弹出到ds:0内存中,注意pop操作是字为单位的操作
6、注意push和pop指令中的超栈的界限问题
7、inc bx将bx中的值加1。
8、dec bx将bx中的值减1。和inc bx正好相反。
五、microsoft asm格式下的各种命令:
0、一个程序要编译运行的基本架构:
assume cs:code
code segment
start: ....
mov ax,4c00H
int 21H
code ends
end
这几行是基本的,不然程序无法编译运行。
1、程序完后要输入
mov ax,4c00H
int 21H
帮助程序返回。
2、利用loop实现循环
mov cx,11,将cx寄存器值置为11
s:add ax,ax,执行ax=ax+1
add bx,bx,执行bx=bx+1
loop s,执行cx=cx-1,cx==0,则往下,cx!=0,则转到s标记的内存地址中继续执行
3、在汇编程序中,数据不能由字母开头,故
mov ax,FFFFH不合法,要改为mov ax,0FFFFH
4、debug中 mov ax,[0]表示将ds:[0]内存中的值
您可能关注的文档
最近下载
- 大麦EK318.操作手册.C01.220905.pdf
- 五马先生纪年.docx VIP
- 急救与心理技能(视频课)知到课后答案智慧树章节测试答案2025年春中南大学.docx VIP
- 应急救援员国家职业技能标准(2019年版).pdf VIP
- 场地设计作图题-一级建筑师场地设计(作图题)真题精选.docx VIP
- 小学环境教育:校园内水体污染调查与水质保护实践教学研究课题报告.docx
- 阿迪达斯(Adidas)品牌现状分析与二次增长战略规划.pptx
- 人教版七年级上册数学一元一次方程计算题及应用题.docx VIP
- 人教版2025八年级上册英语Unit3 same or different单元复习课件.pptx VIP
- 濒危古树评估与抢救保护技术规程.docx VIP
文档评论(0)