汇编学习笔记(3)[bx]和loop
2024-10-09 17:24:55
本文是《汇编语言》一书的学习笔记,对应书中的4-6章。
汇编程序的执行
要想将源代码变为可执行的程序需经过编译、连接两个步骤,WIN7操作系统下需要MASM程序来进行编译连接工作。将MASM和Debug安装在E:\Software\assembly目录下并新建code文件夹,创建汇编源程序1.asm,使用masm命令编译,link命令连接。
;演示的小程序 assume cs:code
code segment mov ax,
mov bx,
add ax,bx
sub bx, mov ax,4c00h
int 21h code ends end
执行link命令后assembly目录下生成1.exe和1.obj两个文件,1.obj为编译过程中的目标文件,1.exe即可执行的二进制文件。1.obj中存储着远程需的描述信息,程序的大小、占用多少空间,当然还有翻译成机器码的源程序代码。
生成1.exe可执行文件后,用debug命令跟踪调试程序。
r命令查看寄存器信息,u命令查看内存中的程序代码。使用Debug加载程序后,ds存储程序开始的段地址,cs指向第一行代码。在ds和cs之间有一段大小为256字节的空间,称为程序段前缀,所以ds-cs=10H。
[bx]
[bx]表示将bx中的值(bx)作为偏移地址来表示一个内存单元,段地址在ds中,也可以显示的指定段地址即ds:[bx]。
loop
loop是循环指令,循环执行从标号开始的内容,下面是计算2^5的代码。
;演示2^5的小程序 assume cs:code code segment mov ax,
mov cx,
s: add ax,
loop s mov ax,4c00h
int 21h code ends end
cx中存储的是循环次数,s是标号,执行到loop s会先将cx-1判断cx是否=0,若不等于0则执行s处代码。
最新文章
- 【BZOJ1001】狼抓兔子
- poj1655 树的重心 树形dp
- 线段树(多棵) HDOJ 4288 Coder
- PHP的三种输出方式
- .net使用FluentValidation进行服务端验证。
- yum命令指南-yum使用方法
- Diablo3
- 【gradle】之maven主库找不到Could not find org.restlet.jee:org.restlet:2.1.1
- 给Qt应用程序添加图标文件ico setWindowIcon
- 疯狂JAVA讲义---第十二章:Swing编程(五)进度条和滑动条
- 【Netty】(5)源码 Bootstrap
- dotnet core使用开源组件FastHttpApi进行web应用开发
- Kafka 详解(二)------集群搭建
- 零基础python入门(1)
- linux 命令 — sed
- js添加锚点
- Ado.Net实体数据模型EF,如何在代码中添加数据库连接密码
- 【Linux高级驱动】平台设备驱动机制的编程流程与编译进内核
- 缓存 Memached
- 启动mongodb出现的问题