
汇编语言基础篇
汇编语言基础记
Only you, only you!
这个作者很懒,什么都没留下…
展开
-
《x86汇编语言:从实模式到保护模式》(第14章---任务和特权级保护)
第10章至第12章作者介绍了保护模式的入门知识,本书前12章的代码量都是比较小的,而第13章作者写了三份代码,介绍主引导程序加载并运行内核,内核再加载并运行用户程序的过程,代码量比以往大大增加,共900多行。但不要害怕,因为后面的章节仅仅是以第13章的代码为基础做扩充,所以笔者认为第13章是一个坎,但顺利越过第13章,后面的章节将容易学习,本文结合第13章,阅读第14章,并以第14章作为突破口,详...原创 2020-03-23 20:08:22 · 976 阅读 · 0 评论 -
《x86汇编语言:从实模式到保护模式》(第9章---中断和动态时钟显示)
外部硬件中断本部分主要以一个外部中断为例,详细说明一个外围部件向CPU请求中断的全过程。笔者阅读书中源码并根据个人理解适当改动注释。加载器代码仍然使用第八章的。 ;文件名:c09_01_user.asm ;文件说明:用户程序 ;参考书:《x86汇编语言:从实模式到保护模式》李忠 著 ;代码功能:RTC更新周期结束中断(每秒更新1次)演示。RTC的中断号是0x70, ; ...原创 2019-12-22 17:04:13 · 569 阅读 · 0 评论 -
《x86汇编语言:从实模式到保护模式》(第8章---硬盘和显卡的访问与控制)
本章主要讲加载器代码如何一步步把用户程序代码从硬盘加载到内存的,然后把CPU交给用户程序,执行用户程序代码。用户程序功能就是显示两段字符串到屏幕上。作者讲解了CPU如何访问显卡和硬盘这样的外围设备,抽象出来说的话就是CPU通过端口向外围设备发号施令以及读写数据。笔者阅读并根据自己理解稍微更改并重新注释了作者的源码(具体细节书中说明比较详细,结合我的注释更易理解),具体如下。 ;文件名:c08_...原创 2019-12-21 20:12:06 · 624 阅读 · 0 评论 -
《x86汇编语言:从实模式到保护模式》(第7章---比高斯更快的计算)
本章主要是编码实现1+2+3+…+100的和,并显示到屏幕上。依旧是加载到主引导扇区,此外也引入了栈段的知识点。 ;文件名:c07_01_mbr.asm ;文件说明:硬盘主引导扇区代码 ;参考书:《x86汇编语言:从实模式到保护模式》李忠 著 ;代码功能:计算1+2+3+……+100,并把结果显示到屏幕 jmp near start ;跳过数据区 text: d...原创 2019-12-17 17:58:13 · 342 阅读 · 0 评论 -
《x86汇编语言:从实模式到保护模式》(第6章---相同的功能,不同的代码)
第五章的代码很多地方是手动写死的,本章就是要利用新的汇编知识改写第五章的代码,变的更加灵活和简洁。图 6-1 以两个逻辑段的视角看待同一个内存区域movsb、movsw指令这两个指令通常用于把数据从内存中的一个地方批量地传送(复制)到另一个地方,movsb 的传送是以字节为单位的,而 movsw 的传送是以字为单位的。movsb 和 movsw 指令执行时,原始数据串的段地址由 DS 指...原创 2019-12-16 19:54:38 · 369 阅读 · 0 评论 -
《x86汇编语言:从实模式到保护模式》(第5章---编写主引导扇区代码)
在前面的预备知识里,我们已经知道,处理器加电或者复位之后,如果硬盘是首选的启动设备,那么,ROM-BIOS 将试图读取硬盘的 0 面 0 道 1 扇区。传统上,这就是主引导扇区(Main Boot Sector,MBR)。读取的主引导扇区数据有 512 字节,ROM-BIOS 程序将它加载到逻辑地址 0x0000:0x7c00处,也就是物理地址 0x07c00 处,然后判断它是否有效。一个有效的...原创 2019-12-15 16:25:11 · 958 阅读 · 0 评论 -
《x86汇编语言:从实模式到保护模式》(预备知识---第1~4章)
笔者建议,在阅读《x86汇编语言:从实模式到保护模式》之前最好阅读王爽的《汇编语言》(非常适合新手入门)。NASM汇编器特别说明本文参考《x86汇编语言:从实模式到保护模式》李忠 著...原创 2019-12-13 17:43:28 · 1014 阅读 · 0 评论 -
《汇编语言》(王爽)学习笔记---实验十二(编写0号中断的处理程序)
具体要求需要通读本章内容。代码在本章中作者已经基本给出了。assume cs:codesegcodeseg segmentstart: ;do0程序的安装,将do0程序写入到内存0:200处 mov ax,cs mov ds,ax mov si,offset do0 mov ax,0 mov es,ax mov di,200h mov cx,offset do0en...原创 2019-10-12 17:19:04 · 319 阅读 · 0 评论 -
《汇编语言》(王爽)学习笔记---实验十一(编写子程序)
assume cs:codesgdatasg segment db "Beginner's All-purpose Symbolic Instruction Code.",0datasg endsstack segment db 16 dup(0)stack endscodesg segmentbegin: mov ax,stack mov ss,ax m...原创 2019-10-12 10:51:14 · 549 阅读 · 0 评论 -
《汇编语言》(王爽)学习笔记---实验十(编写子程序)
先说明一点,本次编程,发现了书中错误之处,书中在讲解MUL指令时,两个相乘的数,如果是8位,一个默认应该存储在AL中,书中错写成AH。导致笔者在编写程序时错误使用AH。。。特此纠正。。思路简单,就是定位显存缓冲区位置,然后把对应字符送到该位置即可。assume cs:codedata segment db 'Welcome to masm!',0data endsstack ...原创 2019-10-11 16:01:07 · 497 阅读 · 3 评论 -
《汇编语言》(王爽)学习笔记---实验九(根据材料编程)
assume ds:data, cs:code, ss:stackdata segment db 'welcome to masm!' db 2H,24H,71H ;字符串属性值data endsstack segment dw 8 dup(0)stack endscode segmentstart: mov ax,stack m...原创 2019-10-08 14:26:27 · 371 阅读 · 0 评论 -
《汇编语言》(王爽)学习笔记---实验八(分析一个奇怪的程序)
分析这个程序的运行过程assume cs:codesg codesg segment mov ax,4c00h int 21h start: mov ax,0 s: nop nop mov di,offset s mov...原创 2019-10-08 11:18:43 · 306 阅读 · 0 评论 -
《汇编语言》(王爽)学习笔记---Windows10下搭建汇编语言开发环境
工具准备下载DOSBox:https://www.dosbox.com/download.php?main=1下载masm上述工具笔者已经打包放在网址下:https://download.youkuaiyun.com/my/uploads/3/1安装搭建环境双击DOSBox默认完成安装即可。把下载的masm包解压,把里面所有文件拷贝到某磁盘文件夹下,如D:\masm。双击DOSBox安装...原创 2019-09-15 18:24:03 · 1007 阅读 · 0 评论 -
《汇编语言》(王爽)学习笔记---实验一(查看CPU和内存,用机器指令和汇编指令编程)
(1)使用debug,把汇编指令写入内存,然后逐条执行,观察CPU各相关寄存器内容的变化。-a命令演示(把汇编指令写入内存):-e命令演示(把机器指令写入内存):(2)将下面3条指令写入从2000:0开始的内存单元中,利用这3条指令计算2的8次方。(3)查看内存(ROM)中的内容PC机主板上的ROM中写有一个生产日期,在内存FFF00H~FFFFFH的某几个...原创 2019-09-15 21:05:40 · 772 阅读 · 0 评论 -
《汇编语言》(王爽)学习笔记---实验二(用机器指令和汇编指令编程)
Debug的T命令在执行修改寄存器SS的指令时,下一条指令也紧接着被执行。(1)Debug执行下面的指令具体实验如下:(2)观察下面实验过程,分析为什么2000:0~2000:f中的内容会变化?为啥会变化,和本文第一句话有关,其实发生中断,在栈里存储一些寄存器的值保存现场。...原创 2019-09-30 16:26:36 · 635 阅读 · 0 评论 -
《汇编语言》(王爽)学习笔记---实验三(编程、编译、连接、跟踪)
编程:t1.asmassume cs:codesgcodesg segment mov ax,2000h mov ss,ax mov sp,0 add sp,4 pop ax pop bx push ax push bx pop ax pop bx mov ax,4c00h int 21hcodesg endsend编译:连接:...原创 2019-10-01 16:39:34 · 569 阅读 · 0 评论 -
《汇编语言》(王爽)学习笔记---实验四([bx]和loop的使用)
任务一Ex4p1.ASMassume cs:codecode segment mov ax,0020h mov ds,ax mov bx,0 mov cx,64s: mov [bx],bx inc bx loop s mov ax,4c00h int 21hcode endsend调试方法一(执行到loop用p命令完成所有...原创 2019-10-05 13:37:29 · 557 阅读 · 0 评论 -
《汇编语言》(王爽)学习笔记---实验五(编写、调试具有多个段的程序)
任务1assume cs:code, ds:data, ss:stackdata segment dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987hdata endsstack segment dw 0,0,0,0,0,0,0,0stack endscode segment start: mov ax,stack ...原创 2019-10-05 19:27:33 · 416 阅读 · 0 评论 -
《汇编语言》(王爽)学习笔记---实验六(问题7.9)
问题7.9编程,将datasg段中每个单词的前四个字母改为大写字母assume cs:codesg,ss:stacksg,ds:datasgstacksg segment dw 0,0,0,0,0,0,0,0stacksg endsdatasg segment db '1. display ' db '2. brows ' db '3. replace ...原创 2019-10-06 12:44:53 · 763 阅读 · 0 评论 -
《汇编语言》(王爽)学习笔记---实验七(寻址方式在结构化数据访问中的应用)
第8章 数据处理的两个基本问题处理的数据在什么地方?要处理的数据有多长?reg(寄存器):ax,bx,cx,dx,ah,al,bh,bl,ch,cl,dh,dl,sp,bp,si,di;sreg(段寄存器):ds,cs,es,ss.8.1 bx,si,di,bp8.4 寻址方式8.5 指令要处理的数据有多长?8.7 div指令div是除法指令。8....原创 2019-10-06 15:10:23 · 628 阅读 · 0 评论 -
(汇编语言)Windows10、64位PC下搭建汇编语言开发环境
参考资料:https://blog.youkuaiyun.com/xyisv/article/details/69062382https://jingyan.baidu.com/article/3d69c551505181f0cf02d7bc.html步骤:安装dosbox不妨在D盘新建一个文件夹masm,把下载到的masm文件夹下的所有文件拷贝到D:\masm下。如下几个截图,按照图输入命令...原创 2018-10-26 20:10:33 · 3508 阅读 · 0 评论