汇编程序语言设计 MOOC 郑州大学 第一周

第一周

1.硬件组成

1.1 寄存器

在这里插入图片描述

重点:硬件分为三个部分:寄存器,输入输出地址,储存器地址
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这节课重要的知识点IA32有8个重要寄存器,重点记忆下面一图。
在这里插入图片描述

1.2 处理器专用寄存器

在这里插入图片描述
专用寄存器有三类:
第一类 标志
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
改变EIP是可以改变程序的顺序
存储空间是可以分段管理的
段寄存器
段
代码段
在这里插入图片描述
在这里插入图片描述

1.3 存储器

在这里插入图片描述
计算机被分为三个部分,CPU 存储器 IO。存储器对应存储器地址
在这里插入图片描述
在这里插入图片描述
8位形成字节,16位形成字,32位形成双字,一个存储单位存放的是一个字节,称字节编址。32位可以表征2的32次的名字。32位处理器最多一次处理32位,EAX是32位的
在这里插入图片描述
4个二进制,相当于1个16位,32位二进制相当于8个16进制位。H表示16位进制。
在这里插入图片描述
MMU存储管理单元。如果程序直接寻找存储器地址是会给存储管理带来麻烦,所以有MMU。
在这里插入图片描述
后续学习最多的是平展存储模型。
在这里插入图片描述
在这里插入图片描述
物理地址与逻辑地址
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
32位存储空间的划分,可以分为以上部分。

2.程序格式

2.1 处理器指令格式

小结:
指令由操作码和操作数(地址码)组成,左右注意。
处理器指令
在这里插入图片描述
这条指令有点像高级语言中的赋值
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
机器代码也叫指令格式,按照习惯使用16位表示
在这里插入图片描述
里面的8B是操作码,操作数部分(Mod R/M)是第二列,SIB也是一种寻址的方式,后面的四个字节都是位移量(80 00 00 00)。上面的格式可能很难理解,但是我们要知道我们高级语言都需要转换成这种机器代码。然后机器代码也不同,同一指令不容数据内容也可能不同。

2.2 语句格式

在这里插入图片描述
在这里插入图片描述
标号与名字都是用户自己定义的。
在这里插入图片描述
在这里插入图片描述
定义一个字符
在这里插入图片描述
在这里插入图片描述
eax也是寄存器,offset msg是操作数
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
执行性语句,有点像高级语言中的操作。
说明性语句,有点像高级语言的赋值定义等

2.3 源程序框架

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
stdcall 是标准调用规范
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
PS:“END”伪指令仅说明汇编到此结束,并不具备返回操作系统的功能。

2.3 信息显示程序

在这里插入图片描述
第一个汇编语言程序
在这里插入图片描述
13,10对应是\n,在底层内部都是有0 结尾的,字符串结尾字符。这里面Dismsg 相当于Printf()。通过OFFset指出偏移地址。EAX是寄存器,他是进行显示的一个入口参数存放的地方。
在这里插入图片描述
在这里插入图片描述
程序在IO32.lib 其说明是IO32.inc
注意子程序调用规范
在这里插入图片描述
库是前人设计的规范
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
问题:汇编中定义字符的时候有段基地址什么?

3.开发过程

3.1 MASM开发软件

最主要的是什么系统平台:WINDOWS
在这里插入图片描述
在这里插入图片描述
汇编程序是将我们源代码转成机器代码的程序。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.2 操作系统平台

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
常称为DOS窗口,但是实际上不是
在这里插入图片描述
这两者本质有不同
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.3 源程序开发

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
汇编只是生成一个目标模板文件,然后需要连接称为可执行文件。
在这里插入图片描述
不能双击是因为我们生成的控制台,双击并不能看到信息
在这里插入图片描述
调试程序:
在这里插入图片描述
在这里插入图片描述
所谓快速开发,MAKE32就是将步骤汇合在一起
在这里插入图片描述

4.程序

1.标准的Hello world

    include io32.inc
    .data
        ;数据定义
msg     byte 'Hello ,World!',13,10,0
;msgzn     byte '你好,瓜娃子!',13,10,0
    .code
start:
        ;主程序
    mov eax,offset msg      ;显示  这边为什么eax 为什么使用offset 
    ;mov ebx,offset msg
    ;mov ecx,offset msg
    ;mov eax,msg
    call dispmsg
    exit 0
        ;子程序
    end start

在这里插入图片描述
2.测试中文可以否

    include io32.inc
    .data
        ;数据定义
;msg     byte 'Hello ,World!',13,10,0
msg     byte '你好,瓜娃子!',13,10,0
    .code
start:
        ;主程序
    mov eax,offset msg      ;显示  这边为什么eax 为什么使用offset 
    ;mov ebx,offset msg
    ;mov ecx,offset msg
    ;mov eax,msg
    call dispmsg
    exit 0
        ;子程序
    end start

在这里插入图片描述
3.测试不用msg1 其他字符

    include io32.inc
    .data
        ;数据定义
xjbx     byte 'Hello ,World!',13,10,0
;msg     byte '你好,瓜娃子!',13,10,0
    .code
start:
        ;主程序
    mov eax,offset xjbx      ;显示  这边为什么eax 为什么使用offset 
    ;mov ebx,offset msg
    ;mov ecx,offset msg
    ;mov eax,msg
    call dispmsg
    exit 0
        ;子程序
    end start

在这里插入图片描述
4.使用其他寄存器

    include io32.inc
    .data
        ;数据定义
msg     byte 'Hello ,World!',13,10,0
;msg     byte '你好,瓜娃子!',13,10,0
    .code
start:
        ;主程序
    ;mov eax,offset msg      ;显示  这边为什么eax 为什么使用offset 
    mov ebx,offset msg
    ;mov ecx,offset msg
    ;mov eax,msg
    call dispmsg
    exit 0
        ;子程序
    end start

在这里插入图片描述
这里看样子不行啊

    include io32.inc
    .data
        ;数据定义
msg     byte 'Hello ,World!',13,10,0
msg2     byte '你好,瓜娃子!',13,10,0
    .code
start:
        ;主程序
    mov eax,offset msg      ;显示  这边为什么eax 为什么使用offset 
    mov ebx,offset msg2
    ;mov ecx,offset msg
    ;mov eax,msg
    call dispmsg
    call dispmsg
    exit 0
        ;子程序
    end start

在这里插入图片描述

    include io32.inc
    .data
        ;数据定义
msg     byte 'Hello ,World!',13,10,0
;msg2     byte '你好,瓜娃子!',13,10,0
    .code
start:
        ;主程序
    ;mov eax,offset msg      ;显示  这边为什么eax 为什么使用offset 
    ;mov ebx,offset msg2
    mov eax,msg
    call dispmsg
    ;call dispmsg
    exit 0
        ;子程序
    end start

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_42174342/article/details/84204308