当前位置: 代码迷 >> 汇编语言 >> 编译语言基础
  详细解决方案

编译语言基础

热度:216   发布时间:2016-05-02 04:31:51.0
汇编语言基础
1. 数据格式

26d    十进制
1Ah    十六进制
42/o/g 八进制

以字母开头的十六进制常量前面必须加一个0,以防止汇编器将其解释为标识符

2. 尽量在表达式中使用圆括号显式表明运算顺序

3. [email protected],因此应尽量避免在自己定义的标志符前用@,但@@myfile为有效

4. 指令

mov
add
sub
mul
jmp
call

5. 汇编程序模板

; 注释
;注释

INCLUDE Irvine32.inc

.data

;在此插入变量

.code

main PROC

; 在此插入可执行代码
exit

main ENDP
; 在此插入其它子程序
END main

6.

BYTE 8位无符号数
SBYTE 8位有符号数
WORD 16位无符号数
SWORD 16位有符号数

DWORD 32
SDWORD 32

FWORD 48
QWORD 64

TBYTE 80
REAL4 32位短实数
REAL8 64位长实数

REAL10 80位实数

7. 数据定义伪指令

DB 定义8位有符号或无符号整数
DW 定义16位有符号或者无符号数

DD 32bit

DQ 64bit
DT 80bit

8 初始值有多个的话,以逗号分割,不想初始化,可以使用符号"?"

9. 数组

list BYTE 10,20,30,40

0000: 10
0001: 20
0002: 30
0003: 40

可以使用的不同的数据格式

list BYTE 10,32,41h,00100010b

10, 定义字符串, 以0空字符串结尾的

greeting BYTE "GOOD AFTERNOON",0

每个字符占一个字节

字符串可以多行,

greet BYTE "TEST"
      BYTE  "LLL"
      BYTE "DDD", 0dh,0ah,0

0dh,0ah,回车换行

11 DUP

DUP 操作符使用一个常量为多个数据项分配存储空间

BYTE 20 DUP(0), 20个字节,全部等于0

BYTE 20 DUP(?), 20个字节,未初始化

BYTE 4 DUP("STACK" 20个字节 “STACKSTACKSTACKSTACK"

12 mylist WORD 1,2,3,4,5 间隔为2

0000:1
0002:2
0004:3
0006:4
0008:5

mylist DWORD 1,2,3,4,5 间隔为4

13, 小尾顺序, 最低的有效字节存储在地址值最小的地址单元里
12345678h

0000 78
0001 56

大尾方式

0000 12
0001 34

14 未初始化的数据

.DATA? 伪指令可用于声明未初始化的数据

15 cout = 500

在重新编译时,使用count的地方都被替换成500

16, 计算数组的大小

list BYTE 10,20,30,40
listsize = ($-list)/数据类型间隔
byte 为1
WORD 为2
DWORD 为4

计算大小要紧跟数组声明后

以下错误

list BYTE 10,20,30
var BYTE 20 DUP(?)
listzie=($-list)/1

listsize 已经包含了var的存储空间

17 EQU TEXTEQU

PI EQU <3.1415>

presskey EQU <"SSSS">

.data
prompt BYTE presskey

continue TEXTEQU <"DO YOU WIANT ">





  相关解决方案