java打印对象内存地址 分布式事务 事务消息 分布式事务 几种解决方案 分布式事务-Seata 分布式事务-Seata 分布式事务-LCN-TCC 分布式事务-LCN 分布式事务-消息队列-定时任务-本地事件表 Zuul网关实战02 Zuul网关实战01 灰度发布落地实战2 灰度发布落地实战1 Gsnova on Heroku build Systemd Debian system initialization manage multi id_rsa ubuntu 64bits cannot run 32bits app REHL power auditing Debug Assembly for ARMv8 on QEMU ARM体系结构--寄存器 Run Debian iso on QEMU ARMv8 QEMU ARM64 guide cross compiler install buildroot install QEMU install python入门--数据结构 python入门--内置数据类型 python入门--类 异常 python入门--条件表达式 方法 python入门--数字 字符串 数组 RTC驱动分析 块设备驱动 TCP UDP socket 触摸屏驱动 USB驱动 LED按键中断 LCD 驱动 驱动信号 根文件系统 实验 内核实验 字符设备驱动程序 绪论 uboot 实验 LCD 实验 系统时钟和UART 中断控制器 Nand Flash控制器 MMU 实验 储存管理器实验 GPIO实验 点亮LED 编译加载驱动 制作烧写内核 dnw替代方法 MINI2440 TQ2440安装配套Linux 使用NFS 制作烧写跟文件系统 grub引导Windows 烧写裸版程序-linux Ubuntu 网络没有 eth0 Linux自动挂载 烧写裸板程序 电路基础 Mac词典 Vim插件 Assembly 综合研究 Assembly 指令总结 Assembly 直接定址表 Assembly 使用BIOS进行键盘输入和磁盘读写 Assembly 外中断 Assembly 端口 Assembly int指令 Assembly 内中断 Assembly 标志寄存器 Assembly 转移指令的原理 Assembly Call和ret指令 Assembly 数据处理两个基本问题 Assembly 灵活定位内存地址 Assembly 包含多个段的程序 Assembly [bx] loop Assembly 第一个程序 Assembly 寄存器 (内存访问) Assembly 寄存器 AWS VPN with EC2 hidden file in picture(linux) Assembly 基础 idea shortcuts 常用快捷键 idea plugin folder install ruby and jekyll

Assembly [bx] loop

2014年09月20日

###[bx]

mov ax,[bx]

AX=((ds)*16 + (bx))

###loop 指令 CPU执行loop指令需进行2步操作:

1.(cx)=(cx)-1

2.判断cx中的值,不为零则转至标号处执行程序,如果为零则向下执行


编程,用加法计算 123 * 236 结果存在AX中

assume cs:code

code segment
	mov ax,0
	mov cx,123	;将236加123次
  s:add ax,236
  	loop s
  	
  	mov ax,4c00h
  	int 21h
 
code ends

end 

在源程序中,数据不能以字母开头,所以要在前面加0

如:0A000H、0A001H

###在debug中跟踪用loop指令实现的循环程序 使用g 0016

其中0016是指令的偏移地址(IP)

功能相当于运行到0016

###debug和汇编编译器masm对指令的不同处理

mov ax,[0]

debug中可以理解为 ax = ds:0

汇编编译器编译为 ax = 0

所以要在前面加上段寄存器

mov ax,ds:[0]

###段前缀 可以在访问内存单元指令中现实的给出内存单元的段地址所在的段寄存器

如:mov ax,ds:[bx]

mov ax,cs:[bx]

mov ax,ss:[bx]

mov ax,ss:[0]

###一段安全的空间 在8086模式中,随意向一段内存空间写入内容是很危险的

在纯DOS方式(实模式)下,可以不理会DOS,直接用汇编语言去操作真实地硬件,因为运行在CPU实模式下的DOS,没有能力对硬件系统进行全面、严格的管理

在windows unix这些运行于CPU保护模式下的OS中,不理会OS直接操作硬件是不可能的,硬件已被这些OS利用CPU保护模式所提供的功能全面而严格的管理了

0:200~0:2ff 这256个字节的空间一般不会被DOS和其他合法程序使用


第五章源码在github