一个菜鸟作的一点汇编笔记

本文是作者学习微机原理时整理的汇编语言笔记,内容包括汇编缩写表、反汇编的局限性、MOV指令的使用、ASSUME的作用、变量寻址、输入数据处理、类型指示符PTR的使用、条件跳转的解决方法,以及指令执行速度的思考。笔记中还包含了常见错误示例及解决策略,并讨论了不同寻址方式对程序性能的影响。
摘要由CSDN通过智能技术生成

这学期学微机原理,顺便学了点汇编,遇到了很多问题,到百度上去求助几乎没人理我,到CSDN来后发现这里的大牛们特别热情,以后就在CSDN扎根了。

下面是我作的一点点笔记(有许多点子还是大牛们告诉我的),如果其中的错误的地方还希望大家指出。马上就得回家了,就不再排版了,以后再修改。

 

 我用的汇编工具是TASM,对于其它的工具可能结果不同 。

(一)、汇编缩写表:

DBDefine Byte(未完)

———————————————————————————————————

(二)、反汇编时一般不能完全还原为原来的代码

eg:

 JC again;在反汇编时会以JB出现

(三)、syntax error

语法错误,如宏命令与已有的指令名,标号名冲突

 

(四)、关于MOV的用法:

       Mov dst,               src

              Reg                reg/mem/data/segreg

              Mem              reg/data/segreg

Segreg           reg/mem

Ac                 mem(acax,al,该指令较其它指令短一个字节,执行速度也快些)

Mem              ac

       :

1SEGREG只能出现在MOV,PUSH,POP

       2Mov mem,mem;错误,如MOV byte ptr [BX],[SI]; Illegal memory reference

3MOV segreg,data;错误,立即数不能传给Segreg

       4MOV segreg,segreg ;SEGMENT不可相互传送

 

(五)、ASSUME作用(猜测)

ASSUME 作用:汇编时在符号表中记录下——变量和标号的段存储位置,如CSDSSS

汇编程序遇到变量、标号时动作:

1、在对变量操作指令中,汇编程序会在符号表中查找该变量的段地址存放地点、偏移地址(段地址存放地点由ASSUME 指定如果没有ASSUME 指定,会报错Can't address with currently ASSUMEd segment registers)。

2、在对标号操作指令中,汇编程序会在符号表中查找该标号的段地址存放地点、偏移地址(段地址存放地点由ASSUME 指定, 如果没有ASSUME 指定,会报错Near jump or call to different CS)。

注意后最几段(39行后)的对变量NO(在CODE中定义)和BUF(在DATA中定义)的寻址,如果没有ASSUME,汇编时就会报错。

       30   0009  C6 07 01                        mov byte ptr [bx],1;use ds

     31       000C  C6 07 01                       mov byte ptr ds:[bx],1;use   ?

     32       000F  C6 47 01 01                   mov byte ptr 1[bx],1;use ds

     33       0013  C6 47 01 01                   mov byte ptr ds:1[bx],1;use ?

     34       0017  36: C6 07    01                mov byte ptr ss:[bx],1;use   ?

     35       001B  C6 46 00 01                   mov byte ptr [bp],1;use ss

     36       001F  3E: C6 46   00 01                  mov byte ptr ds:[bp],1;use   ?

     37       0024  3E: C7 46   00 0001               mov ds:[bp],1;use ?

*Warning* /y/a.ASM(28) Argument   needs type override

     38       002A  3E: C6 46   00 01                  mov byte ptr ds:[bp],1;use   ?

     39       002F  C6 87 0000r 01              mov buf[bx],1;use ds

     40       0034  C6 87 0001r 01              mov buf+1[bx],1;use ds

     41       0039  2E: C6 87   0005r 01      mov no[bx],1;use ?

     42       003F  3E: C6 86   0000r 01      mov buf[bp],1;use ss

     43       0045  2E: C6 86   0005r 01      mov no[bp],1;use ?

     44       004B  C6 06 0000r 01              mov buf,1

     45       0050  2E: C6 06   0005r 01      mov no,1

注:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值