汇编
Hustudent20080101
MFC Qt 瑞萨 ARM Linux
展开
-
用汇编语言申请栈空间
用汇编语言申请栈空间作者:赵孝强,华清远见嵌入式学院讲师。在C程序运行以前要设置好栈空间,在嵌入式ARM系统中,ARM 的启动代码可以实现此类功能,etup Stack for each mode LDR R0, =Stack_Top ; Enter Undefined Instructi转载 2012-06-03 09:28:08 · 2351 阅读 · 0 评论 -
菜鸟学汇编003 代码段寄存器 CS 和 指令指针寄存器 IP
菜鸟学汇编003 代码段寄存器 CS 和 指令指针寄存器 IP分类: 菜鸟学汇编2010-10-20 21:18 992人阅读 评论(0) 收藏 举报1. 8086CPU有20位地址总线,可以传送20位的地址,达到1MB寻址能力。 而 8086CPU 是16位结构,在内部一次性处理、传输、暂时存储的地址都是16位, 从内部结构看,寻址能力只有转载 2012-06-03 10:41:55 · 2425 阅读 · 1 评论 -
80x86汇编语言程序设计P50
.386STACK SEGMENT USE32 DB 200 DUP(0)STACK ENDSCON EQU 500 DATA SEGMENT USE16 A DW M BUF DB 'AB',0DH,0AH B DW 0FFAAH D DD BUF M DB 2 DUP(1),2 DUP(2,'B'),'123',1,2,3DATA ENDSCODE原创 2012-06-03 12:07:16 · 835 阅读 · 1 评论 -
P36 Demo2 ADD [BP-2],AX ;ADD -2[BP],AX不行!
; MOV AX,50H MOV BP,15H MOV CX,10H MOV SS:[0013H],CX ADD [BP-2],AX ;ADD -2[BP],AX不行! MOV CX,SS:[0013H];60H ;P36 Demo2原创 2012-06-03 16:28:22 · 708 阅读 · 0 评论 -
p61Demo8 DATA2 SEGMENT
.386STACK SEGMENT USE32 DB 200 DUP(0)STACK ENDSDATA1 SEGMENT USE16T1 DW -50HT2 DD FDATA1 ENDS;DATA2 SEGMENT USE16BUF DB 'ABCDEF'F DW 70HDATA2 ENDS;CODE SEGMENT USE16A原创 2012-06-04 10:57:41 · 770 阅读 · 0 评论 -
P81Demo2 ASSUME DS:C1
.386A SEGMENT USE16AA DW 0FFHA ENDSB SEGMENT USE16 STACK DB 200 DUP(0)B ENDSC1 SEGMENT USE16CC DB 'ABC'C1 ENDS;D SEGMENT USE16DDO DW 11HD ENDS;CODE SEGMENT USE16原创 2012-06-04 18:31:00 · 781 阅读 · 0 评论 -
交换指令XCHG(exchange)
交换指令XCHG(exchange)把两个地方的数据进行互换 XCHG reg , reg / mem;1.寄存器与寄存器之间对换数据2.寄存器和存储空间之间对换数据3.寄存器与段寄存器之间对换数据4.不能在段寄存器与段寄存器之间对换数据 XCHG指令不允许的情况有以下四种:1. 不能同时都为内存操作数 2. 任何一个操作数都不能为段寄存器 3. 任何一个操作数不能为立即数转载 2012-06-04 22:14:31 · 3910 阅读 · 0 评论 -
P95Ti36查表求立方
.386STACK SEGMENT USE32 DB 200 DUP(0)STACK ENDSDATA SEGMENT USE16ANSTAB DW 0,1,8,27,64,125,216,343,512,729ErrInputMsg DB 0AH,0DH,'Input Error!$'DATA ENDSCODE SEGMENT USE16原创 2012-06-05 08:50:29 · 719 阅读 · 0 评论 -
P119'MOV'
.386STACK SEGMENT USE16 DB 200 DUP(0)STACK ENDSDATA SEGMENT USE16PROG DB 'MOV AX,DATA',0DH,0AH,'MOV DS,AX',0DH,0AH DB 'MOV AX,0',0DH,0AH DB 'MOV BX,2',0DH,0AH,'LEA SI,MMOV',0原创 2012-06-05 15:22:42 · 636 阅读 · 0 评论 -
学习win32汇编指令:lea和offset
主要来源:http://topic.csdn.net/t/20061216/21/5235706.html#r_achorlea 是机器指令,offset 是伪指令。LEA BX, BUFFER ;在实际执行时才会将变量buffer的地址放入bx MOV BX, OFFSET BUFFER ;在编译时就已经计算出buffer的地址转载 2012-05-22 22:31:29 · 3157 阅读 · 0 评论 -
UltraEdit建立汇编的集成开发环境
可以通过UltraEdit建立汇编的集成开发环境,这样可以使汇编语言的学习更加的方便。下面是根据网上的资料整理而得到的。要求:安装TASM5.0(安装路径:C:\TASM)和UltraEdit-32 的6.0以上版本。步骤:1,打开UltraEdit,选择菜单“高级”->“工具栏配置”;2,在“命令行”编辑框上“浏览”选择“F:\TASM\BIN\TASM.EXE”,接上当转载 2012-05-23 09:05:57 · 1026 阅读 · 0 评论 -
汇编语言中PTR的含义
汇编语言中PTR的含义mov ax,bx ;是把BX寄存器“里”的值赋予AX,由于二者都是word型,所以没有必要加“WORD” mov ax,word ptr [bx];是把内存地址等于“BX寄存器的值”的地方所存放的数据,赋予ax。由于只是给出一个内存地址,不知道希望赋予ax的,是byte还是word,所以需要用word明确指出!ptr是显示申明(还是声明?) 所以,当转载 2012-05-23 10:27:53 · 1551 阅读 · 0 评论 -
MOV AX , [A4+10];70 :( 这个[]等于没有加
; MOV DX,A4+6与A4内容无关吗.386STACK SEGMENT USE16 STACK DB 200 DUP(0)STACK ENDSDATA SEGMENT USE16A4 DW 02,20,30,40,50,60,70ANSWER DW 0DATA ENDSCODE SEGMENT USE16原创 2012-05-23 10:53:10 · 1352 阅读 · 0 评论 -
全局变量,局部变量
RISC(reduced instruction set computer,精简指令集计算机)1。全局变量是一次分配,永久使用。 而局部变量是进入代码块的时候分配,退出代码块的时候释放。 这是全局变量和局部变量最根本的区别。 如果你要问哪个快的话, 只要不是频繁分配的情况下,局部变量是全局变量一样快。 因为对于cpu来说, 无论什么变量都是一个地址, cpu jump to 0x1 和ju转载 2012-05-24 10:54:23 · 720 阅读 · 1 评论 -
汇编的局部变量
.386STACK SEGMENT USE16 STACK DB 2000 DUP(0)STACK ENDSDATA SEGMENT USE16 NUM DD 100OUTPUT DB 0DH,0AH,'SUM 0F 1 .. (NUM) IS : 'RESULT DB 16 DUP (' '),'$'DATA ENDSCODE SEG转载 2012-05-24 11:18:39 · 3646 阅读 · 0 评论 -
菜鸟学汇编005 栈(Stack) 和 段寄存器SS、SP
菜鸟学汇编005 栈(Stack) 和 段寄存器SS、SP分类: 菜鸟学汇编2010-10-22 20:22 523人阅读 评论(3) 收藏 举报1. 栈有2个基本操作:入栈、出栈 入栈就是将一个新的元素放到栈顶;出栈就是从栈顶取出一个元素; 2. 栈顶的元素总是最后入栈,最先出栈;栈的这种操作规则被称为:LIFO(Last In Firs转载 2012-06-03 09:28:58 · 1179 阅读 · 0 评论 -
菜鸟学汇编005 栈(Stack) 和 段寄存器SS、SP
菜鸟学汇编005 栈(Stack) 和 段寄存器SS、SP分类: 菜鸟学汇编2010-10-22 20:22 523人阅读 评论(3) 收藏 举报1. 栈有2个基本操作:入栈、出栈 入栈就是将一个新的元素放到栈顶;出栈就是从栈顶取出一个元素; 2. 栈顶的元素总是最后入栈,最先出栈;栈的这种操作规则被称为:LIFO(Last In Firs转载 2012-06-03 10:52:15 · 937 阅读 · 1 评论 -
c内嵌汇编
#include "stdio.h"#include "conio.h"short pow_16(short a, short b)算的是a*2^(b-1). { short result; --b; __asm{ mov ax, a; mov cx, b; s: add ax, ax;转载 2012-06-03 09:56:14 · 618 阅读 · 0 评论 -
通俗理解:汇编七大寻址方式
汇编寻址 只有四个方向: 立即 直接 间接 变址 4大类 其他的都是这四大类的组合体我们首先说明一下内存,内存好比一栋大学宿舍楼,每个宿舍都住着人。寻址的目的是找到数据,(通俗理解为你需要做一件事情,大学里打架了,你去喊人,所以你需要去从宿舍楼里喊人出来帮忙)立即寻址:通俗理解为,指令“A你去xxx宿舍里喊人帮忙”。直接寻址:通俗理解为,指令“A你直接去xxx宿舍里喊人转载 2012-06-03 10:57:55 · 1389 阅读 · 0 评论 -
寻址(P50)
MOV BL,BUF+2;0DH->BL;方式1 MOV SI,OFFSET BUF;方式2 MOV BX,2[SI] ; MOV EAX,OFFSET BUF;方式3 MOV BX,[EAX+2]masm611;MOV EAX,OFFSET BUF;方式3MOV BX,[EAX+2]改成 MOV AX,OFFSET BUF; MOV BX,[AX原创 2012-06-03 16:09:19 · 905 阅读 · 0 评论 -
怎么在masm下loop总是不能循环,一下就置cx为零了?
;.386STACK SEGMENT USE32 DB 200 DUP(0)STACK ENDSDATA SEGMENT USE16NUM DB 11H,22H,33H,44HNEND DB 0LEN EQU NEND-NUMDATA ENDSCODE SEGMENT USE16ASSUME CS:CODE,DS:DATA,SS:STACK原创 2012-06-03 22:20:14 · 1088 阅读 · 0 评论 -
p86 AH10 AH9
.386STACK SEGMENT USE32 DB 200 DUP(0)STACK ENDSDATA SEGMENT USE16BUF DB 80 DB ? DB 80 DUP(0)DATA ENDSCODE SEGMENT USE16ASSUME CS:CODE,DS:DATA,SS:STACKSTART:MOV AX原创 2012-06-04 19:51:34 · 649 阅读 · 1 评论 -
菜鸟学汇编004 DS寄存器
菜鸟学汇编004 DS寄存器分类: 菜鸟学汇编2010-10-22 20:08 535人阅读 评论(2) 收藏 举报1. 在8086CPU中,使用16位寄存器来存储一个字(word). 高8位存放高位字节,低8位存放低位字节。 在内存中存储时,由于内存单元是字节单元,则一个字(word)需要用2个地址连续的内存单元来存放 。 这个字(word转载 2012-06-03 10:47:47 · 837 阅读 · 0 评论 -
51 单片机汇编指令的 寻址方式的通俗解析
接下来就给学生介绍寻址方式分类,同时与现实生活中某些事件作类比,我就我们要给某一位朋友寄快递或信件为例来说明。如果我们知道这位朋友的地址,在信件上直接写上地址交给快递公司就可以了。这就是直接寻址如MOV A,30H;将30H 地址里的内容传送给累加器A(这不是立即数吗?,应该是:MOV A,[30H]吧)如果这位朋友是个名人,或在有名气的单位工作,那我们可只写其单位名称和收转载 2012-06-03 11:08:24 · 1257 阅读 · 0 评论 -
P37Demo2 ;EBP改EBX,必须加SS:
.386STACK SEGMENT USE32 DB 200 DUP(0)STACK ENDSCON EQU 500 DATA SEGMENT USE16A DW MBUF DB 'AB',0DH,0AHB DW 0FFAAHD DD BUFM DB 2 DUP(1),2 DUP(2,'B'),'123',1,2,3DAT原创 2012-06-03 20:11:23 · 690 阅读 · 0 评论 -
P37Demo2;EBP改EBX;EDI改EDX
.386STACK SEGMENT USE32 DB 200 DUP(0)STACK ENDSCON EQU 500 DATA SEGMENT USE16A DW MBUF DB 'AB',0DH,0AHB DW 0FFAAHD DD BUFM DB 2 DUP(1),2 DUP(2,'B'),'123',1,2,3DAT原创 2012-06-03 20:16:51 · 734 阅读 · 0 评论 -
P52Demo3.1
.386STACK SEGMENT USE32 DB 200 DUP(0)STACK ENDSDATA SEGMENT USE16NUM DB 11H,22H,33H,44HNEND DB 0LEN EQU NEND-NUM;不能直接用LEN EQU LEN-NUM,会导致宏嵌套太深DATA ENDSCODE SEGMENT USE16ASS原创 2012-06-03 20:48:22 · 649 阅读 · 0 评论 -
使用MASM-高级语法(2)
使用MASM-高级语法(2)可以看到,MASM编译器对这些条件分支伪指令优化得相当好,看到这些反汇编后的指令,惟一的感觉是好像又回到了DOS汇编时代分支指令堆中,从这里可以发现,这些伪指令把汇编程序的可读性基本上提高到了高级语言的水平。分析反汇编代码可以发现,在不同的条件满足之后,先是执行满足条件后需要执行的指令,如上面的mov esi,0001和mov转载 2012-06-03 21:39:45 · 1089 阅读 · 0 评论 -
汇编指令的英文全称
一般没有现成的,这是我翻译的,有什么问题发消息给我 1.通用数据传送指令. MOV----> move MOVSX---->extended move with sign data MOVZX---->extended move with zero data PUSH---->push POP---->pop PUSHA---->push all POPA---转载 2012-06-03 21:40:39 · 770 阅读 · 0 评论 -
P83Demo3.13 ORG $+5
.386STACK SEGMENT USE32 DB 200 DUP(0)STACK ENDSDATA SEGMENT USE16ORG 10BUF DB 'ABCD' ORG $+5NUM DW 50DATA ENDSCODE SEGMENT USE16ASSUME CS:CODE,DS:DATA,SS:STACKSTART:转载 2012-06-04 18:52:27 · 823 阅读 · 0 评论 -
P94Ti3.3
.386STACK SEGMENT USE32 DB 200 DUP(0)STACK ENDSDATA SEGMENT USE16STR1 DB 0,1,2,3,4,5STR2 DB '012345'COUNT EQU 30NUMB DB 3 DUP(2)NUMW DW 10H,-60HPOIN DW 0DATA ENDSCO原创 2012-06-04 20:58:32 · 747 阅读 · 0 评论 -
汇编中的dup和equ
在汇编定义变量的时候会用到dup。变量名 类型 初值表Dup用于把一个相同值赋值若干次。重复次数 dup(数据项)具体比如s db 30 dup(0)定义一个字节型变量,该变量占用30个字节,所有字节被初始化成0equ是一个代码替换指令比如:s equ bx+simov cx,[s]那么上面两句代码相当于如下指令:mov cx,[bx转载 2012-05-24 11:23:52 · 3093 阅读 · 0 评论