汇编
文章平均质量分 58
汇编详解,包括各种格式汇编
ScottePerk
这个作者很懒,什么都没留下…
展开
-
汇编历史和版本概述
汇编有非常多的格式,包括gas,nasm,masm等。刚开始学的时候非常的困惑,怎么会有这么多的格式?这篇文章就是试图通过汇编的历史来回答这个问题。我想从后起之秀nasm开始讲起。先看一下nasm的自我介绍(自夸):a86不错,但不是免费的,而且你不可能得到32位代码编写的功能——除非你付费。它只使用在DOS上。gas是免费的,而且在DOS下和UNIX下都可以使用,但是它是作为gcc的一个后台而设计的,并不是很好,gcc一直就提供给它绝对正确的代码,所以它的错误检测功能相当弱,还有就是对于任何一原创 2021-12-26 12:25:48 · 1020 阅读 · 0 评论 -
汇编语言之 有冒号的标号和没冒号标号的区别
jmp startmytext db 'H',0x07,'e',0x07,'l',0x07,'l',0x07 start: mov ax,0x7c0 mov bl,mytext mov bh,startret看有什么区别最直接就是查看值。把mytext和start:的值直接存到通用寄存器中,然后在调试的时候查看寄存器的值。mytext的值是48,start的值是8.使用的调试工具是emu8086注意看下图的左边的地址信息。起始地址是0100:000.原创 2021-03-28 17:16:35 · 2319 阅读 · 0 评论 -
.lcomm和comm的区别
最简单的区别就是.lcomm是本地的,l表示local。但问题的关键是什么是本地的?汇编还有非本地的吗?为了弄清楚这个,特别查了资料。首先看看官方手册怎么说的.lcomm的定义https://sourceware.org/binutils/docs/as/Lcomm.htmlReserve length (an absolute expression) bytes for a local common denoted by symbol. The section and value of symb原创 2021-12-25 18:54:36 · 1122 阅读 · 0 评论 -
汇编学习 [BX]和loop指令
汇编学习 [BX]和loop指令[bx]是用来存放偏移地址的,而且只能用bx。不能用其它的通用寄存器。mov ax,100h mov ds,axmov ax,[bx]原创 2021-04-04 18:42:25 · 255 阅读 · 0 评论 -
汇编语言之 通过标号在程序的段内的任意位置实现跳转
org 100hstart:mov ax,0xb800mov ds,ax mov [0x00],0x41 ;字符Amov [0x01],0x04 ;颜色为红色 mov [0x02],'s'mov [0x03],0x14mov [0x04],'s'mov [0x05],0x24 jmp_e:mov [0x06],'e'mov [0x07],0x34mov [0x08],'m'mov [0x09],0x44.原创 2021-03-28 17:44:33 · 427 阅读 · 0 评论 -
汇编语言 之屏幕显示输出Hello World
使用的系统是manjaro linux。使用的工具是emu8086模拟器,是安装在windows xp 系统里面的(用wine也能运行),真实的运行环境是windows xp 虚拟机,语法格式为masm。因为本人已经很久没用windows,而汇编的开发工具windows是比linux好的,特别是这个emu8086模拟器,非常的好用。但是目前来看emu8086是最好用的开发环境了,不光具有调试功能,而且集成了内存视图,文件列表(lst文件)等非常使用的工具,emu8086使用的是masm语法。其实本人更...原创 2021-03-25 18:57:34 · 6382 阅读 · 1 评论