汇编语言笔记

                                               《汇编语言》笔记

以下是我读王爽老师的《汇编语言》所归纳的重要知识点,如果有纰漏欢迎指正。

一、DEBUG和MASM的使用

        DEBUG

DEBUG命令 用法 作用 举例
R -r 寄存器 查看、改变CPU寄存器的内容 -r ax
-r 查看所有CPU寄存器的内容 -r
D -d CS:IP 字节数 查看内存中的内容(DEBUG默认列出128位字节) -d 1000:0 9
U -u CS:IP 字节数 查看内存中的内容并翻译成汇编语言(DEBUG默认列出32位字节) -u 1000:0 5
G -g CS:IP 执行CS:IP处的一条机器指令并执行-r -g 0016
E -e CS:IP 改写的内容 改写CS:IP后的内容(也可以通过提问来改写)——输入数字或字符 -e 1000:0 0 1 'a' 2 'b' 3 'c'
A -a CS:IP 以汇编指令的格式在内存中写入一条机器指令(回车以结束)

-a

MOV AX,BX

T -t 执行一条机器指令并执行-r(CS:IP自动跳转至下一条指令) -t
       

          MASM

              (1)编译

                          ①运行MASM.EXE

                          ②输入源码文件(.asm)相对路径或绝对路径

                          ③输入输出文件(.obj)路径和文件名,按Enter为默认路径

                          ④输入生成的列表文件的路径和文件名,按Enter为不生成                         

                          ⑤输入生成的交叉引用文件的路径和文件名,按Enter为不生成

                          图示为编译成功

                  (2)链接

                                 ①运行LINK.EXE

                                 ②输入连接目标(.obj)相对路径或绝对路径

                                 ③输入输出文件(.exe)路径和文件名,按Enter为默认路径

                                 ④输入生成的列表文件的路径和文件名,按Enter为不生成

                                 ⑤输入生成的交叉引用文件的路径和文件名,按Enter为不生成

                   (3)其他的一些内容

                                      ①生成失败的一些原因

                                                 A.代码是否有误

                                                 B.指定文件是否存在

                                     ②快速编译并连接

                                                 A.masm (路径+)文件名;

                                                 B.link (路径+)文件名;

二、一些基本知识

           (1)字由低位至高位;汇编不区分大小写;可以用单引号加字符表示其ASCII码(例如 'a'为61H)

           (2)每一个16位寄存器都可以分为两个八位寄存器

                     例如:AX可以分为AH和AL

            (3)计算机执行的指令由短地址(CS)和 偏移地址(IP)组成

                     执行的指令位于CS×16+IP

                     段寄存器还有CS,DS,ES,SS

                     注意:CS和IP中的值不支持用MOV更改!

            (4)计算机读写的数据可以用DS寄存器和[idata]组成

                      读取的数据位于DS×16+[idata]

                      注意:A.务必判断DS所指向的段空间是否存放重要代码,建议使用0:200~0:2ff这一段空间

                                 B.在实际写代码时,若idata为数值,则需写为DS:[idata],否则MASM将会解释为数值idata

                                 C.若IDATA为BP寄存器,则DS为SS寄存器

                                 D.可以使用DI和SI两个八位寄存器作为二级偏移地址

             (5)计算机为每个程序提供了一个栈,其中,SS:SP始终指向栈顶元素

                       即栈顶元素为SS×16+SP

                       注意:当心栈越界!

               (6)循环的次数由CX寄存器决定

               (7)EXE的加载过程

              (8)在屏幕上显示过程

                        内存中的0b800h对应屏幕上的像素点0,0

                        图为在屏幕中间显示'!'

                        也可以用int10中断

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值