汇编学习笔记
记录一下了解汇编语言的学习过程!
yuluo_YX
大学生在线
展开
-
10_标志寄存器
标志寄存器标志寄存器和其他寄存器不同,其他的寄存器是用来存放数据的,整个寄存器具有一个含义而标志寄存器是按位起作用的,也就是说,它的每一位都有专门的含义,记录特定的信息1,3,5,12,13,14,15位没有使用,不具有任何意义而0,2,4,6,7,8,9,10,11位都具有特殊的含义ZF标志:ZF标志:第六位,零标志位,对结果取反 mov ax, 1 sub ax, 1 指令执行后,结果为0.则ZF = 1 mov ax, 2 sub ax, 1原创 2021-07-31 17:36:34 · 237 阅读 · 0 评论 -
12_端口
端口端口的读写:端口的读写指令只有两条:in和out分别用于读取和写入数据对0~255以内的端口进行读写 in al,60h;从60h端口读取数据 在in和out中只能用al和ax寄存器对256~65535的端口进行读写 mov dx, 3f8h ;将端口号3f8送入dx in al, dx ;从3f8h端口读入一个字节CMOS RAM芯片:包含一个实时钟和一个有128个存储单元的RAM存储器芯片依靠电池供电,关机后仍可正原创 2021-07-31 17:10:41 · 152 阅读 · 0 评论 -
11_int指令
int指令int指令:int指令的执行过程: 1,取中断类型码n 2,标志寄存器入栈,IF = 0, TF = 0 3,CS,IP入栈 4,IP执行内存中断表的位置从此处转去执行n号中断的中断处理程序编写供应用程序调用的中断例程:eg:编写,安装中断7ch的中断例程,实现求--word型数据的平方 功能:求--word型数据的平方 参数:ax 要计算的数据 返回值:dx,ax中存放结果的高16位和低16位 应用举例:求2 * 3原创 2021-07-31 17:09:40 · 477 阅读 · 0 评论 -
09_Call和Ret指令
Call和Ret指令ret和retf指令:ret指令用栈中的数据,修改IP的内容,从而实现近转移.退出retf指令用栈中的数据,修改CS和IP的内容,从而实现远转移,退出assume cs:codesgstack segment dh 16 dup (0)stack endscodesg segment mov ax, 4c00h int 21hstart: mov ax, stack mov ss, ax mov sp, 16原创 2021-07-30 11:42:12 · 204 阅读 · 0 评论 -
08_转移指令的原理
转移指令的原理:操作符offest:8086CPU的转移指令大致分为一下几类 1,无条件转移 (jmp) 2,条件转移指令 3,循环指令 (loop) 4,过程 5,中断 操作符offest: 由编译器处理,取得标号的偏移地址 start : mov ax, offset start ;相当于mov ax,0 s: mov ax, offset s ;相当于mov ax原创 2021-07-29 15:45:05 · 96 阅读 · 0 评论 -
07_数据处理的两个基本问题
更灵活的定位内存地址bx, si, di, bp:在寄存器中,只有bx, si, di, bp可以用在[……]中进行寻址。可以单独出现或只能以bx和si,bx和di, bp和si, bp和di机器指令处理的数据所在位置:处理大致可分为三类:读取,写入,运算指令在执行前,处理的数据可以在三个地方: CPU内部,内存,接口汇编语言中数据位置的表达:1,立即数 对于直接包含在机器指令中的数据(执行前在CPU的指令缓冲器中)。 在汇编语言中直接给出 mo原创 2021-07-29 10:27:14 · 99 阅读 · 0 评论 -
06_更灵活的定位内存地址的方法
更灵活的定位内存地址and和or的指令:and指令:逻辑与指令,按位进行与运算(同时为真即为真)mov al,01100011Band al,00111011B=al: 00100011Bor:逻辑或指令,按位进行或运算mov al,01100011Bor al,00111011B=al: 01111011BASCII编码:编码方案就是一套规则,约定用什么样的信息来表示现实对象以字符形式给出的数据:在汇编程序中用“……”来表示字符数据表示unix assume原创 2021-07-28 19:29:52 · 116 阅读 · 0 评论 -
05_包含多个段的程序
[BX]和loop指令在代码段中使用数据:assume cs:codesgcodesg srgment dw 0123, 0456, 0789, 0abc, 0def, 0fed, 0cba, 0987start: mov bx, 0 mov ax, 0 mov cx, 8s: add ax, cs:[bx] add bx, 2 loop s mov ax, 4c00h int 21h codesg endsend s原创 2021-07-26 14:13:19 · 53 阅读 · 0 评论 -
04_[BX]和loop指令
[BX]和loop指令[BX]:[bx]同样也表示一个内存单元,它的偏移地址在bx中。mov ax(字), [bx] mov al(字节), [bx]loop指令:inc : 自增指令loop:循环指令eg:loop计算2的12次方:(1)计算2的三次方: assume cs:code code segment start: mov ax, 2 add ax, ax (原创 2021-07-25 15:21:49 · 222 阅读 · 0 评论 -
03_第一个程序
第一个汇编程序:一个源程序从写出到执行的过程:编写编译连接执行编程 -> 1.asm -> 编译 -> 1.obj -> 连接 -> 1.exe -> 加载 -> 内存中的程序 -> 运行(edit) (masm) (link) (command) (CPU)为了监控程序的执行,我们可以使用debug,使用中断机制。# debug *.exe单步结束的时候,原创 2021-07-23 18:03:11 · 61 阅读 · 0 评论 -
02_寄存器(内存访问)
寄存器( 内存访问 ):内存中字的存储:例如:在0地址处存放20000(4E20H)0 低地址单元存放的低位数字(20H) 1 高地址单元存放的高位数字(4EH) 0,1的高低地址位时相对的。字在内存中存储时,要用两个连续的内存单元来存放。高位又高位字节存放,低位由低位存放。任何两个地址连续的内存单元,N号单元和N+1号单元,可以将它们看成两个内存单元,也可以看成一个地址为N的字单元中的高位字节单元和低位字节单元DS和[address]:DS寄存器存放的是要访问的原创 2021-07-22 13:11:57 · 279 阅读 · 0 评论 -
01_寄存器(CPU工作原理)
寄存器(CPU工作原理):X86CPU的寄存器都是16位的,可以存放两个字节。AX,BX,CX,DX通常用来存放一般性数据被称为通用寄存器一个16位寄存器可以存放的最大的数字是2的16次方减一。AX的低8位(07)构成了AL寄存器,高八位(815)构成了AH寄存器AH和AL都是可以独立使用的8位寄存器几条汇编指令:(汇编指令不区分大小写)mov ax, 18 将8送入AXmov ah, 78 将78送入Aadd ax, 8 将寄存器AX中的数值加上8mox ax, bx原创 2021-07-16 19:47:43 · 972 阅读 · 1 评论 -
00_基础
基础篇:机器语言:是机器指令的集合,即就是一台机器可以正确执行的命令电平脉冲:CPU工作原理寄存器BX的内容送到AX中 MOV BX,寄存器BX的内容送到AX中汇编语言的组成:1.汇编指令(机器码的助记符),*核心* 决定汇编语言的特性2,伪指令(由编译器执行)3,其他符号(由编译器识别)数字后面的H是十六进制,B是二进制1B = 8b(bit)1KB = 1024B1MB = 1024KB1GB = 1024MB1TB = 1024GBcpu对存储器的读写:存储单元的原创 2021-07-13 10:51:41 · 72 阅读 · 0 评论