爱笑的冰柠檬汁
爱笑的冰柠檬汁
关注数: 33
粉丝数: 126
发帖数: 1,174
关注贴吧数: 25
借用搜狐视频会员的来
各种书籍都有
出售各种书籍
好莱坞会员
好莱坞会员 昨天充值的,借用抠抠2557257362
有资源的拉我
电脑维修
爱奇艺会员号
有需要纸质书籍王爽汇编第三版的好友没
小 鱼汇编教程 莫作伸手党,下载前请回复 链接: http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fpan.baidu.com%2Fs%2F1sltGxMt&urlrefer=63fe9cbdca83b01a757bcce8616ed1e7 密码: h9ff
《汇编语言(第3版)》王爽 链接:http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fpan.baidu.com%2Fs%2F1pK7bsRx&urlrefer=d4d762127f464d25fc88e56089cc8fd6 密码:si2u
乐视会员共享,每日更新,吧主误删
汇编语言过时了没 感觉没用到
clc指令 clc:设置标志寄存器标志位cf=0,即进位清零
CBW的用法 在8086中CBW(convert byte to word)指令将AL的最高有效位D7扩展至AH,即:如果AL的最高有效位是0,则AH = 00;AL的最高有效位为1,则AH = FFH。AL不变。CBW属符号扩展指令,它可以把8位扩展到16位,扩展前后两数的真值不变,主要用于数据类型不同时用符号扩展指令可以使得数据类型相同。
EQU指令在地址标号1 EQU $-地址标号2的用法 $是当前该符号所在的偏移地址,$-地址标号表示$偏移地址-标号偏移地址,结果是字数据,在内存中占一个字单元
判断奇数和偶数的个数 assume cs:codesg,ds:data data segment number db 23,53,32,93,-32,-85 all dw 6;所有数据的个数 jishu db 0 oushu db 0 data ends codesg segment start: mov ax,data mov ds,ax mov cx,all mov bx,0 mov jishu,0;对奇数计数器初始化 mov oushu,0;对偶数计数器初始化 s: mov al,number[bx] and al,1 cmp al,0 jz ok inc jishu;是奇数 jmp short s0 ok: inc oushu;是偶数 s0: inc bx;指向下一个数 loop s mov ax,4c00h int 21h codesg ends end start
统计负数的个数 assume cs:codesg,ds:data data segment number db -19,28,37,-46,55,61,-74,0;结尾用0结束数据块 sum db 0;记录负数的个数 data ends codesg segment start: mov ax,data mov ds,ax mov cx,0 mov bx,0 mov sum,0;初始化负数计数器 s: cmp number[bx],0 je ok inc cx cmp number[bx],10000000b jb ok1 inc sum ok1: inc bx;指向下一个数据单元 jmp short s ok: mov ax,4c00h int 21h codesg ends end start
LAHF指令的作用 用于将标志寄存器的低八位送入AH,即将标志寄存器FLAGS中的SF、ZF、AF、PF、CF五个标志位分别传送到累加器AH的对应位(八位中有三位是无效的)
nop指令的作用 (1)通过nop指令的填充(nop一个字节),使指令按字对齐,从而减少读取指令时的内存访问次数。 (2)通过nop指令产生一定的延迟,但是对于快速的CPU来说效果不明显,可以使用rep前缀,多延迟几个时钟。 (3)i/o传输时,用nop等待缓冲区清空,总线恢复。 (4)清除由上一个算术逻辑指令设置的标志位 (5)破解:对于原程序中验证部分使用nop来填充,使验证失效
xlat指令的作用 XLAT作用:将((BX)+(AL))送给(AL)----简单:将BX为首地址的,偏移地址为AL的内容送给AL,类似于AL=[BX+AL]
mov ah,1 int 21h的功能 这两条指令是对DOS (磁盘操作系统)1 号功能的调用,从键盘上输入一个字符,将其对应字符的ASCII码送入AL中,并在屏幕上显示该字符。如果按下的是Ctrl+Break组合键,则终止程序执行。1号功能调用无须入口参数,出口参数在AL中。
我的汇编笔记 汇编语言是各种CPU提供的机器指令的助记符的集合 重点:机器工作的基本原理 培养底层编程的意识和思想 计算机将机器指令转变为一列高低电平以使计算机的电子器件受到驱动进行运算。 一个CPU有N根地址线,则可以说这个CPU的地址总线的宽度为N。这样的CPU最多可以寻找2的N次方个内存单元。(一个内存单元=1Byte)。 存储器基本的存储单元为字节(8个二进制位) 1GB=2^10MB 1MB=2^10kb 1kb=2^10byte CPU要想对数据进行读写,必须和外部器件进行信息的交互(地址信息、控制信息、数据信息) 早期计算机概念:可以执行机器指令,进行运算的机器 现代计算机概念:由CPU和其他受CPU直接或间接控制的芯片、器件、设备组成的计算机系统 存储器从读写属性上看分两类:随机存储器【RAM】可读可写,带电存储 只读存储器【ROM】只能读取 存储器相同点:都和CPU的总线相连 CPU对它们进行读或写的时候都能通过控制线发出内存读写命令 一个典型的CPU由运算器、控制器、寄存器等器件构成 运算器 进行信息处理 控制器 控制各种器件进行工作 寄存器 进行信息存储【是CPU中程序员可以用指令读写的部件】 在写一条汇编指令或一个寄存器的名称时不区分大小写 在进行数据传送或运算时,要注意指令的两个操作对象的位数一致 物理地址:内存单元在存储空间中所在的唯一地址 CPU在访问内存时,用一个基础地址【段地址*16】和一个相对于基础地址的偏移地址相加,给出内存单元的物理地址 CPU可以用不同的段地址和偏移地址形成同一个物理地址 段寄存器:CS DS ES SS 任何时刻,CPU将CS:IP指向的内容当做指令执行 CPU工作原理 1、从CS:IP指向的内存单元读取指令,读取的指令进入指令缓冲器 2、IP=IP+所读取指令的长度,从而指向下一条指令 3、执行指令。转到步骤1,重复这个过程 CPU大部分寄存器的值都可以用mov指令改变 能够改变CS、IP的内容的指令为转移指令 代码段 用来存放代码的一组地址连续的内存单元 jmp 某一合法寄存器 用寄存器中的值修改IP sub ax bx==>ax=ax-bx 内存中的数据和代码没有任何区别,关键在于如何解释 字单元:存放一个字型数据【16位】的内存单元,由两个地址连续的内存单元组成。高地址内存单元中存放字型数据的高位字节,低地址内存单元中存放字型数据的低位字节 指令执行时8086CPU自动取ds中的数据为内存单元的段地址 8086不支持将数据直接送入段寄存器的操作 mov add sub是具有两个操作对象的指令,jmp是具有一个操作对象的指令 栈是一种具有特殊的访问方式的存储空间 8086CPU的入栈和出栈操作都是以字为单位进行的 SS:SP提示栈顶;改变SP后写内存的入栈指令;读内存后改变SP的出栈指令 pop、push实质上就是一种内存传送指令,可以在寄存器和内存之间传送数据,与mov指令不同的是,push和pop指令访问的内存单元的地址不是在指令中给出的,而是由SS:SP给出的 push指令的格式可以是如下形式: push 寄存器 push 段寄存器 push 内存单元 Debug的T命令在执行修改寄存器SS的指令时,下一条指令也紧接着被执行
致各位亲爱的吧友们 欢迎新吧友加入进来,在这里我们可以一起讨论有关汇编的话题,不管交谈什么,只要 不要脱离本吧的主题就OK,严禁谈论其他话题,尤其是百度公司明文规定的禁类话题。有些吧友在讨论话题时常常互动不及时导致交流中断,为解决这个问题,大家可以加汇编群 284893086方便即时互动,最后祝大家互动愉快!
1
下一页