汇编语言程序设计章节程研讨清华大学计算机系 毛希平.pptx
文本预览下载声明
《汇编语言程序设计》
课程研讨
清华大学计算机系 毛希平;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;标号 指令 寄存器 说明程序或语句的功能
变量 伪指令 标号
宏指令 变量
常数
表达式;实模式编程 保护模式编程(DOS编程 WIN32编程)
完整段定义 简化段定义;……
code segment
main proc far
assume ……
start:
……
……
mov ax,4c00h
int 21h
main endp
code ends
end start;data segment
……
data ends
stack segment
dw 100 dup (?)
tos label word
stack ends
code segment
main proc far
assume cs:code, ds:data, ss:stack
start:
mov ax, stack
mov ss, ax
mov sp, offset tos
push ds
sub ax, ax
push ax
mov ax, data
mov ds, ax
……
ret
main endp
code ends
end start;;;int main()
{
int ar0[]={0,1,2};
int ar1[]={1,2,3};
int ar2[]={2,3,4};
int *p[]={ar0,ar1,ar2};
……
} ;.model small
.data
……
.code
.startup
……
.exit 0
end ;;;数据定义伪操作
与高级语言(数据类型与变量定义)类比 总结 分类;整数和整数数组
dwFlag dw 0ffffh
val1 SWORD -32768 ; 最小的16位有符号数
val2 BYTE 255 ; 最大的8位无符号数
MASM6.0以上的编译器专门提供了无符号数定义伪指令(BYTE、WORD、DWORD等)和有符号数定义伪指令(SBYTE、SWORD、SDWORD等)。;例:
array1 SDWORD 1,2,3,4,5,6,7,8,9,10
array2 BYTE 41h,42h,43h,44h,45h,46h,47h,48h,49h,
4ah,4bh,4ch,4dh,4eh,4fh,50h,51h,52h,\ 53h,54h,55h,56h,57h,58h,59h,5ah
array3 BYTE “ABCDEFGHIJKLMNOPQRSTUVWXYZ”
array4 SWORD 1,0,0,0
SWORD 0,1,0,0
SWORD 0,0,1,0
SWORD 0,0,0,1
array5 SWORD 1,0,0,0,
0,1,0,0,
0,0,1,0,
0,0,0,1;例:
array3 BYTE “ABCDEFGHIJKLMNOPQRSTUVWXYZ”
……
cld
mov esi, offset array3
mov edi, esi
mov ecx, lengthof array3
again:
lodsb
add al, 20h
stosb
loop again
……;指针
; 定义目标数据对象
val1 SWORD -32768
array3 BYTE “ABCDEFGHIJKLMNOPQRSTUVWXYZ”
; 定义指针
lp1 DWORD val1 ; 保护模式下用DWORD,实模式下用WORD
lp2 DWORD array3
或者:
lp1 DWORD offset va
显示全部