汇编
mcgrady_tracy
这个作者很懒,什么都没留下…
展开
-
8086汇编学习笔记7-标志寄存器
CF,寄存器的第零位,进位标志位,在进行无符号运算时,记录运算是否有进位或借位。PF,寄存器的第二位,奇偶标志位,记录相关指令执行后,其结果所有位中1的个数是否为偶数。ZF,寄存器的第六位,零标志位,记录相关指令执行后,其结果是否为0。SF,寄存器的第七位,符号标志位,记录相关指令执行后,其结果是否为负。DF,寄存器的第十位,在串处理时,控制每次操作后si和di是增还是减。OF原创 2011-11-13 20:51:07 · 741 阅读 · 0 评论 -
8086汇编学习笔记5-伪指令
伪指令不同于汇编指令,汇编指令有对应CPU能够识别的机器码,而伪指令主由编译器识别。1. 段声明段名 segment..段名 endssegment和ends是用来定义一个段,segment是一个段的开始,ends是一个段的结束,一个段必须有个名称来标识。2. 汇编程序结束标记endend是一个汇编程序结束标记,编译器在编译汇编程序过程中,如果碰到end,就结束对源原创 2011-11-13 20:48:30 · 1913 阅读 · 0 评论 -
power.s
#PURPOSE: Program to illustrate how functions work# This program will compute the value of# 2^3 + 5^2##Everything in the main program is stored in registers,#so the data section doesn't have原创 2013-10-18 21:55:36 · 980 阅读 · 0 评论 -
factorial.s
#PURPOSE - Given a number, this program computes the# factorial. For example, the factorial of# 3 is 3 * 2 * 1, or 6. The factorial of# 4 is 4 * 3 * 2 * 1, or 24, and so on.##This program sho原创 2013-10-20 20:41:45 · 701 阅读 · 0 评论 -
maximum.s
#PURPOSE: This program finds the maximum number of a# set of data items.##VARIABLIES: The registers have the following uses:## %edi - Holds the index of the data item being examined# %ebx -原创 2013-10-09 22:56:43 · 704 阅读 · 0 评论 -
exit.s
#PURPOSE: Simple program that exits and returns a# status code back to the Linux kernel##INPUT: none##OUTPUT: return a status code. This can be viewed# by typing## echo $?## after run原创 2013-10-09 22:47:23 · 858 阅读 · 0 评论 -
Linux下汇编学习-1
<!--p {margin-bottom:0.21cm}-->教材:programming from the ground up第一个程序.section .data.section .text.globl _start_start:movl $1, %eaxmovl $0, %ebxint $0x80我们给这个名字取名为ex原创 2011-12-02 15:08:15 · 1202 阅读 · 0 评论 -
Linux下汇编学习-2
<!--p {margin-bottom:0.21cm}-->第二个程序在一组数据中查找最大数,先看程序.section .datadata_items:.long 3, 67, 34, 222, 45, 75, 54, 34, 44, 33, 22, 11, 66, 0.section .text.globl _start_start:原创 2011-12-02 15:26:15 · 1284 阅读 · 0 评论 -
8086汇编学习笔记6-寻址方式
寻址,寻的什么址,当然是内存,寻址方式有多种,就像我回四川一样,可以坐飞机,然后坐火车,也可以直接坐火车,当然还可以坐汽车,不过我到没有试过。1. 操作数据的地址,有四个寄存器bx,si,di和bp可以用来对内存单元的寻址(1)直接寻址ds:[idata](2)寄存器间接寻址,[bx]、[si]、[di]、[bp](3)寄存器相对寻址[bx+idata]、[si+idata]、[d原创 2011-11-13 20:49:46 · 690 阅读 · 0 评论 -
8086汇编学习笔记1-基础
1. 什么是汇编语言汇编指令是各种CPU提供的机器指令的助记符集合。CPU只认识0和1组成的机器指令,但是使用机器指令去编写的程序难于书写和阅读,所以采用汇编,汇编只是机器指令的另一种表示方法。编写好汇编程序,还需要汇编编译器将汇编翻译成机器指令,这样CPU才能识别与执行。机器指令:1000100111011000汇编指令:mov ax, bx但是汇编程序并不只包含有对应机器指令的原创 2011-11-13 20:44:27 · 1001 阅读 · 0 评论 -
8086汇编学习笔记9-中断
中断信号可以来自CPU内部或外部。 一. 8086CPU内部中断信号有(1) 除法错误(2) 单步执行(3) 执行into指令(4) 执行int指令1. 中断码8086用一个字节来描述中断码,可以表示256中不同的中断信息。除法错误中断码为0单步执行中断码为1执行into指令中断码为4执行int n指令中断码为n2. 中断向量表用来存放中断码原创 2011-11-13 20:53:05 · 4216 阅读 · 0 评论 -
8086汇编学习笔记10-端口
8086CPU有两种地址空间,一是内存地址空间,二是端口地址空间,访问端口只能用in和out指令,分别用于从端口读数据和往端口写数据,CPU最多可以定位64KB个不同的端口,端口地址范围为0~65535。在访问端口时,只能用ax或al来存放从端口读取的数据和往端口写入的数据,8位端口用al,16位端口用ax。在访问端口号为0~255时在指令中直接给出端口号。in al, 20hou原创 2011-11-13 20:53:53 · 3237 阅读 · 0 评论 -
8086汇编学习笔记8-转移指令
修改IP,或同时修改CS和IP的指令称为转移指令只修改IP时,称段内转移,段内转移又分为短转移和近转移,是根据IP修改范围不同而区分的,短转移修改IP范围为-128~127,近转移修改IP范围为-32768~32767。同时修改CS和IP时,称段间转移,也称远转移1. jmp为无条件转移指令,可以修改IP,也可以同时修改CS和IP(1) jmp short 标号,段内短转移,s原创 2011-11-13 20:52:09 · 1170 阅读 · 0 评论 -
Linux下AT&T语法同Intel语法区别
<!--p {margin-bottom:0.21cm}-->在linux下汇编使用的是AT&T汇编语法,同在windows上的Intel语法有所区别总结一下AT&T同Intel语法区别1 AT&T的立即数前面要加上$符号,比如$42 AT&T的寄存器前面要加上%符号,比如%eax3 AT&T源操作数和目标操作数同Intel语法位置相反,例如movl$4翻译 2011-12-01 16:56:29 · 786 阅读 · 0 评论 -
IA32寄存器
<!--p {margin-bottom:0.21cm}-->Basic program execution registers (基本的编程寄存器)包含8个通用寄存器,6个段寄存器,一个程序状态寄存器和一个指令指针寄存器。8个32位通用寄存器包括eax, ebx, ecx, edx, esi, edi, ebp和esp,eax的低16位可以当作一个独立的1原创 2011-12-02 14:24:51 · 2423 阅读 · 0 评论 -
Linux下汇编学习-4
<!--p {margin-bottom:0.21cm}-->#PURPOSE:This program will compute the value of# 2^3 + 5^2.section .data.section .text.globl _start_start:pushl $3pushl $2call poweradd原创 2011-12-05 16:08:24 · 970 阅读 · 0 评论 -
8086汇编学习笔记2-寄存器
8086CPU有14个寄存器,AX、BX、CX、DX、SI、DI、SP、BP、IP、CS、SS、DS、ES、PSW。注意:写汇编程序时,不区分大小写,编译器都能识别。1. 通用寄存器AX、BX、CX、DX这四个寄存器通常用来存放一般数据,称为通用寄存器。这四个寄存器都可以当作两个独立的8位寄存器来用。AH,AL, BH, BL, CH, CL, DH, DL。2. 段寄存器CS原创 2011-11-13 20:45:21 · 833 阅读 · 0 评论 -
8086汇编学习笔记4-指令
汇编指令,有相对应的机器指令1. 数据传送指令movmov ax, bx2. 加法指令addmov ax, 1mov bx, 2add ax, bx;ax=ax+bx执行后ax值为33. 加1指令incmov bx, 1inc bx运算后bx值为2,相当于执行add bx, 14. 减法指令submov ax, 5mov bx, 3sub原创 2011-11-13 20:47:37 · 1112 阅读 · 0 评论 -
8086汇编学习笔记3-程序组织
1. 关于段地址和偏移地址8086CPU有20位地址总线,达到1MB寻址能力,但是8086CPU又是16位结构CPU,一个寄存器只能存16位数据。所以8086用两个寄存器来表示一个20位的物理地址,一个称为段地址,一个称为偏移地址,然后由地址加法器将两个16位地址合成一个20位的物理地址。地址加法器计算物理地址公式:物理地址=段地址*16+偏移地址2. CS寄存器用来存放代码段段地址,原创 2011-11-13 20:46:31 · 777 阅读 · 0 评论 -
Linux下汇编学习-3寻址方式
<!--p {margin-bottom:0.21cm}-->一般的寻址格式为ADDRESS_OR_OFFSET(%BASE_OR_OFFSET,%INDEX, MULTIPLIER)这上面所有的字段都是可选的,最后的地址为:FINALADDRESS = ADDRESS_OR_OFFSET + %BASE_OR_OFFSET + MULTIPLIER * %原创 2011-12-05 11:46:57 · 1604 阅读 · 0 评论