汇编语言(王爽) 第5章[BX]和loop指令

本文深入解析8086汇编语言中的关键指令,如mov、loop及段寄存器的使用,详细说明如何操作内存单元,以及如何进行循环控制。同时,文章还探讨了内存单元的表示方法和段前缀的概念。

mov ax,[0] 把一个内存单元给寄存器ax,内存单元长度2个字节,偏移地址0,段地址ds

mov al,[0] 把一个内存单元给寄存器al,内存单元长度1个字节,偏移地址0,段地址ds

so:要描述一个内存单元,需要1.ds和偏移地址2.内存单元长度

[bx]也表示一个内存单元,偏移地址在寄存器bx中罢了

我们用()表示一个寄存器或一个内存单元中的内容

()中可以是寄存器,段寄存器,内存单元的物理地址

5.1 [bx]

mov ax,[bx] 把段寄存器ds和偏移地址在bx中的内存单元的内容给ax

也就做一个下面的很简单的程序

 

5.2 loop

循环

s为标号,代表指令的地址

loop s执行的过程就是1 cx-- ,2 判断cx是不是0,不是的话跳到S标号出执行,是0的话直接执行下面的语句

5.3 都是实践的,直接写代码了

5.4 编译器中内存单元的写法

mov ax,[0]在编译器中会解释成mov ax,0

mov ax,[bx]和mov ax, ds:[bx]都会解释成把段地址ds*16+bx中的偏移地址所代表的物理地址中的内容给ax寄存器

5.5 loop和[bx]的联合应用

这里唯一要注意的就是8位的数据加到16位寄存器的方法

这里用土办法

mov ah,0

mov al,ds:[0]

mov bx,ax

用一个寄存器的高位设0,低位接收数据,再赋给另一个寄存器

5.6 段前缀

mov ax,ds:[0] ds就是段前缀

就是ds,cs,ss,es这些东西,出现在指令中,指明段地址的东西称为段前缀

5.7 段安全空间

有些内存是不可写的,写的话会报错

不要去手动改内存的内容

程序运行的时候,cpu会自动给程序分配内存

 

扯淡完毕

 

EOF

 

转载于:https://www.cnblogs.com/wz0107/p/5380167.html

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值