汇编
文章平均质量分 63
GilgameshG
00000
展开
-
汇编--基础知识
1.1 CPU:一种微处理器,计算机系统就是由CPU和其他受CPU直接或间接控制的芯片,器件,设备组成的。 寄存器:CPU中可以储存数据的器件,一个CPU有多个寄存器。(缓存)1.2 汇编语言的组成:汇编指令 伪指令 其他符号。 汇编语言的核心是汇编指令。1.3 存储器:要想让一个CPU工作必须提供指令和数据,而这些就存放在存储器中,也就是平常我们说的内存。内存的作用仅次于CPU。(C原创 2017-01-18 00:12:06 · 384 阅读 · 0 评论 -
汇编--9 call指令和ret指令
9.1ret和retf cpu执行ret指令时,相当于进行 pop IP cpu执行retf指令时,相当于进行 pop IP pop CS9.2call指令 将当前ip 或cp、ip压入栈后进行转移9.3根据位移进行转移的call指令 call 标号 相当于 push IP jmp near ptr 标号9.4 转移目的地址在指令中的call指令 cal原创 2017-03-26 21:46:21 · 545 阅读 · 0 评论 -
汇编--7 数据处理
7.1汇编语言中数据位置的表达7.1.1 idata立即数 对于直接包含在机器指令中的数据(执行前在cpu指令缓冲器中),在汇编语言中成为立即数,在汇编指令中直接给出。比如:mov ax,17.1.2寄存器 指令要处理的数据存在寄存器中,汇编指令给出相应的寄存器名称7.1.3段地址(SA)和偏移地址(EA) 指令要处理的数据在内存中,在汇编指令中可用[X]的格式给出EA,SA在牟恩 段寄存器中原创 2017-02-27 17:02:12 · 418 阅读 · 0 评论 -
汇编4--[BX]和loop指令
4.1[bx]是什么? 之前我们写过mov ax,[0]这样的汇编指令,表示数据从一个内存单元传送到寄存器。但这样的汇编指令写在编译器里是不能通过的。[bx]的作用就是代替汇编指令中要用到的像[0]这样的内存单元,在使用前先向bx传送值。上面的汇编指令可以改写成 mov bx,0 mov ax,[bx].4.2loop指令 作用相当于c语言中的while,让某一个语句循环执行,在汇编语言中原创 2017-02-10 23:05:12 · 491 阅读 · 0 评论 -
汇编3-寄存器
3.1内存中字的存储任何两个地址连续的内存单元,N号和N+1号单元,可以将它们看成两个内存单元,也可以看成一个地址为N的字单元中的高位字节单元和低位字节单元。3.2段地址寄存器 DS是段地址寄存器,里面存储的是16位的数据,代表当前段地址。 不能直接通过mov指令将数据存入DS中,mov ds,1000H这样写是错误的。只能先把1000H存入通用寄存器mov BX,1000H 然后 mov DS原创 2017-02-06 21:29:38 · 473 阅读 · 0 评论 -
汇编12--端口
12.1端口的读写 CPU可以直接读写以下3个地方的数据: (1)CPU内部的寄存器 (2)内存单口 (3)端口对端口的读写不能用mov、push、pop等内存读写指令。端口的读写指令只有两条:in 和 out ,分别用于从端口读取数据和往端口写入数据。 访问端口: in 寄存器,端口号(存放端口号的寄存器) //从该端口号读取一字节数据到寄存器 out 端口号(存放端口号的寄存器),原创 2017-04-09 21:26:24 · 770 阅读 · 0 评论 -
汇编11--内中断
11.1内中断的产生 CPU可以在执行完当前正在执行的指令之后,检测到从CPU外部发送过来或内部产生的一种特殊信息,并且可以立即对所接受的信息进行处理,这种特殊的信息,我们可以称其为:中断信息。中断的意思是,CPU不再接着向下执行,而是转去处理这个特殊信息 当发生以下信息时,将产生相应的中断信息 (1)除法错误,比如div指令发生溢出 (2)单步执行 (3)执行into指令 (4)执行i原创 2017-04-03 17:47:55 · 486 阅读 · 0 评论 -
汇编6--灵活定义内存地址
6.1以字符形式给出数据 db ‘un’相当于db 75H,6EH即字符的ascill的数值,注意ascill码只有8位,治理定义的是字节型数据6.2大小写转换 大小写字符的ascill码只有第五位不一样,大写字符第五位为0,小写为1. 小写变成大and al,11011111B 大写变小写or al,00100000B原创 2017-02-16 12:34:16 · 548 阅读 · 0 评论 -
汇编-5 包含多个段的程序
5.1定义字型数据 dw 0123H 这行代码就定义了0123H这个字型数据。多个数据之间用逗号隔开。 用dw定义的数据在数据段的最开始,所以可以用cs:[bx]这样的段前缀来获取dw定义的数据。 但是因为dw定义的数据放在代码段里,编译器可能会把dw定义数据的代码编译成一些汇编指令的机器码,所以汇编程序中要给程序设定入口,用标识符实现 assume cs:code code segeme原创 2017-02-15 23:01:01 · 592 阅读 · 0 评论 -
汇编2--寄存器
CPU中最主要的部件就是寄存器,程序员通过改变各种寄存器中的内容来实现对CPU的控制 2.1 通用寄存器:8086CPU的寄存器都是16位的。上一代CPU的寄存器都是8位的,所以为了保证兼容性,8086CPU的通用寄存器都可以分为两个可独立使用的8位寄存器来用。2.2 字在寄存器中的存储 出于兼容性的考虑,8086CPU可以一次性处理两种类型的数据 字节:记做byte,一个字节由8个bit原创 2017-01-20 10:50:34 · 444 阅读 · 0 评论 -
汇编--10 标志寄存器
10.1 flag寄存器是16位寄存器,他的每一位都有专门的含义,其中使用到的只有0.2.4.6.7.8.9.10.11位有特殊含义。我们主要学习标志位寄存器中的CF PF ZF SF OF DF标志位10.1.1ZF标志位 flag的第六位是ZF。0标志位,它记录相关指令执行后,其结果是否为0,若果结果为0,那么zf = 1,如果结果不为0,zf = 0.10.1.2PF标志位 flag的第原创 2017-03-27 16:43:24 · 750 阅读 · 0 评论