Assembly
文章平均质量分 50
deargua
学下吧,软件工程师
展开
-
汇编里 PTR 用法
MOV AX,[BX]为什么要用WORD PTR? mov ax,bx ;是把BX寄存器“里”的值赋予AX,由于二者都是word型,所以没有必要加“WORD” mov ax,[bx];是把内存地址等于“BX寄存器的值”的地方所存放的数据,赋予ax。由于只是给出一个内存地址,不知道希望赋予ax的,是byte还是word,所以需要用word明确指出!原创 2007-05-18 12:37:00 · 3940 阅读 · 3 评论 -
跳转指令和循环指令详解
跳转指令 Jxx指令不影响标志,但要利用标志(下表)。根据利用的标志位不同,17条指令分成4种情况: ⑴ 判断单个标志位状态 ⑵ 比较无符号数高低 ⑶ 比较有符号数大小 ⑷ 判断计数器CX为0有符号数的大(Greater)小(Less)需要组合OF、SF标志,并利用ZF标志确定相等(Equal)两数的大小分成4种关系:⑴ 小于(不大于等于):JL(JNGE)⑵ 不小于(大于等于转载 2007-05-20 12:15:00 · 3982 阅读 · 0 评论 -
移位和循环指令
逻辑左移一位相当于无符号数乘以2 逻辑右移一位相当于无符号数除以2 1)算术移位 当乘数或除数是2n时,算术移位用来快速地完成对整数进行乘法或除法的运算。算数左移n位相当于乘上2n,执行方法是把原来的数中每一位都向左移动n个位置,左面移出的高位丢弃不要,右面低位空出的位置上全部补0。 2)逻辑移位 逻辑左移n位的执行方法,是把原来的数中每一位都向左移动n个位置,左面移出的高位丢弃不要,右面低位转载 2007-05-20 11:20:00 · 4037 阅读 · 0 评论 -
串操作指令
串操作指令能对存贮区中一块(串)字节或字进行操作,其块的长度可达64K字节,任一个这样的基本操作指令前还能用一个重复前缀使它们重复地操作。 重复执行串操作指令(由CX控制次数) ,实现串操作。 注意:所有的基本串操作指令都约定:源串用寄存器SI进行寻址,在无超越前缀时,段地址取自于数据段寄存器DS;目的串则用寄存器DI进行寻址,其段地址总是取自于附加段寄存器ES中。 串操作指令在每一次操作之转载 2007-05-19 21:00:00 · 4140 阅读 · 0 评论 -
汇编hello world
看了这么多天了,终于可以写出一个,hello world 了,激动啊。;Date:2007.05.22 ;Author:sunyonggao;Description:在dos下显示一句话;入口参数: ah=09H ;ds:dx=待输出字符的地址 ;说明:待显示的字符串以’$’作为其结束标志 data segment str db Hello,This is my first asm原创 2007-05-22 15:41:00 · 2864 阅读 · 0 评论 -
写汇编程序前的准备知识
做汇编程序的步骤:1.用编辑程序建立.asm源文件2.用masm程序把.asm文件转换成obj文件。3.用link程序把.obj文件装换成.exe文件或用exe2bin程序把.exe文件装换成.com文件。汇编语言源程序的结构源程序由段组成,每段有一个段名,segment定义段起点,ends定义段结束点。每段由若干语句行组成,源程序以end结束。 汇编语言源程序是段结构的:代码段、数据段、堆栈转载 2007-05-22 11:09:00 · 2026 阅读 · 0 评论 -
汇编指令之算术指令
算术指令 IBMPC机的算术运算指令包括二进制运算及十进制运算指令。算术指令用来执行算术运算,它们中有双操作数指令,也有单操作数指令。如前所述,双操作数指令的两个操作数中除源操作数为立即数的情况外,必须有一个操作数在寄存器中。单操作数指令不允许使用立即数方式。算术指令的寻址方式,均遵循这两个规则。(一)加法指令ADD 加法ADC 带进位加法INC 加11.ADD转载 2007-05-18 20:52:00 · 3588 阅读 · 0 评论 -
汇编语言指令系统
1.mov在上篇文章中已经介绍2.PUSH和PoP指令都必须根据当前SP的内容来确定进栈或出栈的存储单元,而且必须及时修改指针,以保证(SP)指向当前的栈顶。(1) 堆栈的存取必须以字为单位,(IBM PC中不允许字节堆栈),所以PUSH和POP指令只能作字操作。(2) 它们可以使用初立即数以外的其他寻址方式。(3) 指令也可以指定段寄存器作为操作数,注意POP绝对不能使用代码段(CS)寄存器转载 2007-05-18 20:11:00 · 3053 阅读 · 0 评论 -
处理机控制类指令
用于任意设置进位标志CLC ;复位进位标志:CF←0STC ;置位进位标志:CF←1CMC ;求反进位标志:CF←~CF串操作指令中,需要使用CLD ;复位方向标志:DF←0STD ;置位方向标志:DF←1在编写中断服务程序时,需要控制可屏蔽中断的允许和禁止CLI ;复位中断标志:DF←0STI ;置位中断标志:DF←1NOP不执行任何操作,但占用一个字节存储单元,空耗一个指令执行周期转载 2007-05-20 17:37:00 · 2502 阅读 · 0 评论 -
IBM PC机的机器语言指令
IBM PC机的机器语言指令是多字节指令,一条指令可以由1—7个字节组成。指令的操作码(用OP表示)采用二进制代码表示本指令所执行的操作,在IBMPC机中,它通常用指令的第一个字节表示,有时由于用8位还不够,因此在指令的第二个字节中还可能占有3位操作码,除此以外的其他字节则用来表示地址码。在多数操作码中,常使用某些位来指示某些信息。例如 ----------------------原创 2007-05-18 18:31:00 · 2308 阅读 · 0 评论 -
汇编 寻址方式总结
1. 立即寻址立即寻址方式用来表示常数,它主要用于给寄存器赋初值,注意:只能用于源操作数字段,不能用于目的操作数字段。例1 MOV AL,5 2.直接寻址在IBM PC机中将操作数的偏移地址称为有效地址EA。在直接寻址方式中有效地址EA就在指令中,它存放在代码段中指令操作码之后,但操作数一般存放在数据段中,所以必须先求出操作数的物理地址,然后再访转载 2007-05-17 20:55:00 · 9999 阅读 · 4 评论 -
子程序调用和中断指令
子程序的调用及返回指令1.调用call dst;调用的时候ip或eip压栈将机器执行的当前值(即call指令的下一条指令的地址)压入堆栈以便子程序返回用。2.返回ret返回时ip出栈带参数的返回指令 ret NN是一个16位的常数(偶数),该指令是将返回地址弹入ip或eip后在执行sp/esp+N -->sp/esp.该指令允许返回地址出栈后修改堆栈的指针,这便于调用子程序以前把子程序所需要的转载 2007-05-20 17:25:00 · 7476 阅读 · 0 评论 -
mov指令详解
MOV指令可以在CPU内或CPU和存储器之间传送字或字节,它传送的信息可以从寄存器到寄存器,立即数到寄存器,立即数到存储单元,从存储单元到寄存器,从寄存器到存储单元,从寄存器或存储单元到除CS外的段寄存器(注意立即数不能直接送段寄存器),从段寄存器到寄存器或存储单元。 但是注意(1) MOV指令中的源操作数绝对不能是立即数和代码段CS寄存器;(2)转载 2007-05-18 19:31:00 · 39830 阅读 · 1 评论 -
C和汇编混合编程
.data是初始化的数据块。这些数据包括编译时被初始化的globle和static变量,也包括字符串。连接器将OBJs及LIBs文件的.data结合成一个大的.data。local变量以放在一个线性的堆栈中,不占.data和.bss的空间。和.text一样,数据块是以明文的形式存放在文件中的。无法防止对其物理的修改。.bss区是存放未初始化全局和静态变量的。 在C和汇编混合编程的时候,存在C语转载 2007-05-24 11:00:00 · 2459 阅读 · 0 评论