《Intel+汇编语言程序设计(第五版》——第3章 汇编语言的基本元素

    技术2024-10-24  23

     整数常量以及整数表达式

     实数常量 字符常量、字符串常量 保留字 标识符 伪指令 指令

     

     

     

    1(1)整数常量: -26 十进制      26d 十进制       11011110b 二进制 42q 八进制     42o 八进制        1Ah 十六进制 0A3h 十六进制 l整数表达式:   4+5*2   12-1mod 5       -5+2       (4+2)*6

    (2)实数常量

     

    2. +3.0 -44.2E+05 26.E5 l(3)字符、字符串常量 字符常量是以单引号或双引号括起来的单个字符。         例如:   ‘A’       “d” 字符串常量是以单引号或双引号括起来的一串字符。   例如: ‘ABC’ ‘4096’ “Goodnight, Gracie” 引号可以嵌套: “This isn’t a test” ‘Say “Goodnight,” Gracie’ 汇编语言中一些有特殊意义的单词,只能用于正确的上下文环境中: 指令助记符:例如 MOV,ADD和MUL等。 伪指令:用于告诉MASM如何编译程序。 属性:为变量和操作数提供有关尺寸以及使用方式的信息,例如BYTE和WORD。 运算符:用在常量表达式中。 预定义符号:例如@data,在编译时返回整数常量值 (5) 标识符 是程序员选择的名字,用来识别变量、常量、过程或代码标号。 (6)伪指令              与真正的指令不同,伪指令不在程序运行时执行              用于定义逻辑段、选择内存模式、定义变量和创建过程等。 伪指令不区别大小写。 .data:用于标识程序中包含变量的区域。或.DATA    .Data .code:标识程序中包含指令的区域。或.CODE  .Code PROC:标识过程的开始。例如 name  proc ENDP:标识过程的结束。例如  name  endp  2. 注释   单行注释:以分号(;)开始。块注释:以COMMENT伪指令   l 程序是以段组织的,常见的段有代码段、数据段和堆栈段等。 代码段包含程序的全部可执行指令,通常代码段都有一个或一个以上的过程,其中一个是启动过程。例如:在Addsub程序中,main就是启动过程。 数据段存放变量。  程序模板 TITLE Program Template (Template.asm) ;程序描述: ;作者: ;创建日期: ;版本: ;修改日期: 修改者: INCLUDE Irvine32.inc .data ;(在此插入变量) .code main PROC ;(在此插入可执行代码) exit main ENDP ;(在此插入其他子程序) END main  TITLE Program Template (Template.asm) ;程序描述: ;作者: ;创建日期: ;版本: ;修改日期: 修改者: .386 .model flat,stdcall .stack 4096 ExitProcess PROTO,dwExitCode:DWORD DumpRegs PROTO .code main PROC ;(在此插入可执行代码) call DumpRegs INVOKE ExitProcess,0 main ENDP ;(在此插入其他子程序) END main .386
    .386 指出了该程序要求的最低CPU(intel 386)
    .model flat,stdcall .MODEL 伪指令指示汇编器为保护模式程序生成代码, STDCALL 允许调用MS-Windows函数
    ExitProcess PROTO,dwExitCode:DWORD DumpRegs PROTO 两条PROTO 伪指令声明了该程序使用的过程原型:ExitProcess 是一个MS-Windows函数,起作用是 终止当前程序(称为进程);DumpRegs是Irvine32连接库中一个显示寄存器的过程。
      INVOKE ExitProcess,0 程序通过调用ExitProcess来结束执行,传递给该函数的参数是返回码,取值是0。INVOKE是一个用于调用过程或函数的汇编伪指令。

    MASM615
    定义数据
    堆栈段存放着子程序的参数和局部变量。
      TITLE Program Template (Template.asm) ;程序描述: ;作者: ;创建日期: ;版本: ;修改日期: 修改者: INCLUDE Irvine32.inc .data ;(在此插入变量) var1 BYTE 10h var2 SBYTE -14h var3 WORD 2000h var4 SWORD +2345 var5 DWORD 12345678h var6 SDWORD -2342423 var7 FWORD 0 var8 QWORD 1234567812345678h var9 TBYTE 10000000000123456789h var10 REAL4 -1.25 var11 REAL8 3.2E+100 var12 REAL10 -6.223424E-2343 .code main PROC ;(在此插入可执行代码) exit main ENDP ;(在此插入其他子程序) END main TITLE Chapter 3 Exercise 3 (ch03_03.asm) Comment ! Description: Write a program that defines symbolic constants for all of the days of the week. Create an array variable that uses the symbols as initializers. Last update: 05/02/2002 ! INCLUDE Irvine32.inc Sunday = 0 Monday = 1 Tuesday = 2 Wednesday = 3 Thursday = 4 Friday = 5 Saturday = 6 .data myDays DB Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday .code main PROC exit main ENDP END main TITLE Chapter 4 Exercise 4 (ch04_04.asm) Comment ! Description: Write a program that defines symbolic names for several string literals (characters between quotes). Use each symbolic name in a variable definition. Last update: 05/02/2002 ! INCLUDE Irvine32.inc sym1 TEXTEQU <"System failure"> sym2 TEXTEQU <"Press any key to continue..."> sym3 TEXTEQU <"Insufficient user training"> sym4 TEXTEQU <"Please re-start the system"> .data msg1 DB sym1 msg2 DB sym2 msg3 DB sym3 msg4 DB sym4 .code main PROC exit main ENDP END main

    最新回复(0)