汇编语言-王爽(学习笔记)-5-8章

5章:

1.loop指令:loop实现循环功能,cx存放循环次数。

cpu执行loop时,进行如下操作:cx=cx-1;判断cx是否为零,cx不为0,则转至标号处执行程序,cx为0则向下顺序执行。

格式:

{

mov cx,循环次数

标号:

循环的程序段

loop 标号

}

 

2

汇编源程序中,数字不能以字母开头。要在前面加0.如

mov ax,ffffh;错误

mov ax,0ffffh;正确,在字母前加0

3一段安全的空间:

注意:我们在纯DOS(实模式)下,可以不理会DOS,直接用汇编操作真实的硬件,因为运行在CPU实模式下的DOS没有能力对硬件系统做全面的检查。但是在Windows,Unix这些运行于CPU保护模式下的操作系统中,不理会操作系统而直接用汇编操作硬件是不可能的。

当直接向一段内存中写入内容时,这段内存不应该存放其他内存的数据或代码,dos方式,一般0:200·~0:2ff空间是空闲的,可以直接写入.

实验【bx】和loop的使用:

实验4:向内存0:200~0:23f依次传入数据0~63(3fh)

assume cs:code

code segment

mov ax,0020h;

mov ds,ax;设置(ds)=(0020h)

mov bl,0

mov cx,40h;设置循环40h次

s:

mov [bx],bx

inc bx

loop s

mov ax,4c00h

int 21h

code ends

end

6章:

end可以通知程序的入口。如:标号......end 标号;标号处为程序的入口。

哪一条指令是程序的第一条指令,由可执行文件中的描述信息指明。可执行文件由描述信息和程序组成,程序源自于源程序中的汇编指令和数据。end start指明入口地址,存储在可执行文件描述信息中。

程序框架:

ASSUME CS:CODE

CODE SEGMENT

.......

......

START:

 

CODE ENDS;代码段结束

END START ;程序结束

6.3 将数据,代码,栈,放入不同的段中

把数据,代码,栈放到一个段混乱,且8086段空间是64k,所以建议放在不同的段中。

段名相当于一个标号,代表了段地址。所以指令mov ax data的含义就是将段名为data的段地址送进ax。

mov ds ,data错误,8086不允许将数值直接送进段寄存器。程序对段名的引用,如指令mov ds,data中的data,将被编译器处理为一个表示段地址的数值.

第7章

汇编中字符数据编译器转为相应的ASCII码。

大写->小写  or 00100000

小写->大写 and 11011111

A ASCII码:65,小写字母ASCII码值比大写字母大32(20h)

si 和di不能分成两个8位寄存器使用

第八章

总结一下寄存器寻址:

(1)8086中,只有si di bx bp可以用在[... ]中寻址。[ax] [cx] [cs] [dx]错误

(2)在[...]中这四个寄存器可以单独出现,或者只能以4种组合出现:bx+si,bx+di,bp+si,bp+di.

mov ax ,[bx+bp];错误

mov ax,[si+di];错误

(3)在[..]使用的bp默认段地址是ss。

机器指令处理的数据在什么地方?

机器指令这一层,不关心数据的值,而关心指令执行前一刻,它将处理的数据所在的位置。指令执行前,数据可以在:CPU内部,内存,端口。

指令要处理的数据有多长?

(1)寄存器指明数据尺寸。

(2)word ptr/byte ptr指明

(3)指令默认访问单元长度。

8.7 DIV指令:

被除数/除数

除数有8/16位,在reg或者内存单元中。

被除数默认在AX,DX中。除数8位,则在AX中,除数16位,则在DX,AX中,dx存放高16位。

结果:除数位8位,商在al中,余数在ah中。16位同理。

格式:div reg

          div 内存单元

8.9dup 由编译器处理的符号,与db,dw ,dd等数据定义伪指令混合使用,进行数据的重复。

db 3 dup(0);定义了三个字节,值都是0,相当于db 0,0,0,3指的是重复3次。

 

 

 

 

 

 

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值