汇编语言--前言

1,汇编语言:早期程序员发现使用机器语言(二进制)来操作计算机很麻烦,难以看懂。于是汇编语言就产生了,简单点说它其实就是用一些助记符来标示对应的机器语言,便于阅读和记忆。例如:机器指令1000100111011000表示把寄存器BX的内容送到AX中,而对应的汇编代码就是 mov ax, bx。

2,汇编程序的工作过程一般是如下图:
这里写图片描述
由3类指令组成:(1)汇编指令,机器码的助记符,有对应的机器码。(2)伪指令,没有对应的机器码,由编译器执行,计算机不执行。(3)其它符号,如+,-,*,/等,也是由编译器识别,没有对应的机器码。后面两个部分就是由编译器去工作,算出结果给计算机直接用。

3,计算机总的工作原理:首先计算机的所有操作计算都是由CPU控制,它里面有很多寄存器和计算器(早期有:加法器,乘法器,一般减法通过加法算,除法慢慢算…),这是计算机大脑,而它要操作的数据来源是从内存中获取,计算机对内存进行了编号,以一个字节为存储单元,从零开始编号,计算机就是通过这个编号来查找对应的数据的。然后CPU和内存之间传递数据的通道就是我们所说的总线,即一些导线,能传递低电平或高电平,以此来标识二进制数据0或1,一根导线即对应一个二进制位。总线包括:地址总线,数据总线,控制总线三种。地址总线:传递内存地址数据的通道,条数越多,寻址范围越大。数据总线:传递数据的通道,条数越多,一次传递的数据位越多,如32根,一次就可以传递4字节的数据。控制总线:CPU对外部器件的控制就是通过控制总线来进行的,条数越多,提供的控制种类就越多。示例:将内存地址为3的单元内数据传递到CPU寄存器AX中,汇编指令为:MOV AX, [3],对应的计算机内部运行示例图如下:
这里写图片描述
注释:最终存储到内存中的数据都是二进制位了,没有操作指令与数据的区别。

4,存储大小进制换算
1Byte = 8bit,
1KB = 1024B,
1MB = 1024KB,
1GB = 1024MB,
1T = 1024GB.

5,BOIS(“Basic Input Output System”):本质就是一个软件(程序),写死到了主板上的ROM芯片中。它保存着计算机最重要的基本输入输出的程序、系统设置信息、开机后自检程序和系统自启动程序。 其主要功能是为计算机提供最底层的、最直接的硬件设置和控制。当今,此系统已成为一些病毒木马的目标。一旦此系统被破坏,其后果不堪设想。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
比较字符串可以使用汇编语言中的指令来实现。以下是一个比较字符串的汇编程序示例: ``` section .data str1 db 'hello', 0 str2 db 'world', 0 section .text global _start _start: mov esi, str1 ; 将 str1 的地址存储在 esi 中 mov edi, str2 ; 将 str2 的地址存储在 edi 中 cmp_loop: mov al, [esi] ; 将 esi 指向的字符存储在 al 中 mov bl, [edi] ; 将 edi 指向的字符存储在 bl 中 cmp al, bl ; 比较两个字符 jne not_equal ; 如果不相等,跳转到 not_equal 标签 cmp al, 0 ; 如果两个字符相等,检查是否是字符串的结尾 je equal ; 如果是字符串的结尾,跳转到 equal 标签 inc esi ; 指向下一个字符 inc edi jmp cmp_loop ; 继续比较下一个字符 not_equal: ; 如果不相等,输出提示信息并退出程序 mov eax, 4 mov ebx, 1 mov ecx, msg_not_equal mov edx, msg_not_equal_len int 0x80 mov eax, 1 xor ebx, ebx int 0x80 equal: ; 如果相等,输出提示信息并退出程序 mov eax, 4 mov ebx, 1 mov ecx, msg_equal mov edx, msg_equal_len int 0x80 mov eax, 1 xor ebx, ebx int 0x80 section .data msg_not_equal db 'Strings are not equal', 0xA msg_not_equal_len equ $ - msg_not_equal msg_equal db 'Strings are equal', 0xA msg_equal_len equ $ - msg_equal ``` 这个程序可以比较两个字符串 `str1` 和 `str2` 是否相等。程序先将 `str1` 和 `str2` 的地址分别存储在 `esi` 和 `edi` 中,然后逐个比较两个字符串中的字符。如果有字符不相等,程序就会输出提示信息并退出。如果两个字符串完全相等,程序也会输出提示信息并退出。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值