微机原理与接口技术(朱红)第4章 汇编语言程序设计
微机原理与接口技术课后答案

计算机应用基础A第1章基础知识1.1 计算机中常用的计数制有哪些?解:二进制、八进制、十进制(BCD)、十六进制。
1.2 什么是机器码?什么是真值?解:把符号数值化的数码称为机器数或机器码,原来的数值叫做机器数的真值。
1.3 完成下列数制的转换。
微型计算机的基本工作原理汇编语言程序设计微型计算机接口技术建立微型计算机系统的整体概念,形成微机系统软硬件开发的初步能力。
解:(1)166,A6H(2)0.75(3)11111101.01B, FD.4H(4 ) 5B.AH, (10010001.011000100101)BCD1.4 8位和16位二进制数的原码、补码和反码可表示的数的范围分别是多少?解:原码(-127~+127)、(-32767~+32767)补码(-128~+127)、(-32768~+32767)反码(-127~+127)、(-32767~+32767)1.5 写出下列真值对应的原码和补码的形式。
(1)X= -1110011B(2)X= -71D(3)X= +1001001B解:(1)原码:11110011 补码:10001101(2)原码:11000111 补码:10111001(3)原码:01001001 补码:010010011.6 写出符号数10110101B 的反码和补码。
解:11001010,110010111.7 已知X和Y的真值,求[X+Y]的补码。
(1)X=-1110111B Y=+1011010B(2)X=56D Y= -21D解:(1)11100011(2)001000111.8 已知X= -1101001B,Y= -1010110B,用补码求X-Y 的值。
解:111011011.9 请写出下列字符的ASCII码。
4A3-!解:34H,41H,33H,3DH,21H1.10 若给字符4和9 的ASCII码加奇校验,应是多少?解:34H,B9H1.11 上题中若加偶校验,结果如何?解:B4H,39H1.12 计算下列表达式。
微机原理与接口技术-第4-1章

例4-3 用键盘最多输入10个字符,并存 入内存变量Buff中,若按“Enter”键,则 表示输入结束。
用BIOS层功能调用实现 层功能调用实现 的源程序: 的源程序: .MODEL SMALL CR EQU 0DH .STACK 200H .DATA Buff DB 10 DUP(?) .CODE .STARTUP MOV CX, 0AH LEA BX, Buff
Windows层功能模块的调用
Win32 API使用堆栈来传递参数 API函数调用 C语言的消息框函数的声明: int MessageBox( HWND hWnd, // handle to owner window LPCTSTR lpText, // text in message box LPCTSTR lpCaption, // message box title UINT uType // message box style );//参数 最后还有一句说明: Library: Use User32.lib.//说明这个函数的位置
API 函数的返回值
有的API 函数有返回值,如MessageBox 定义 函数有返回值, 有的 的返回值是int类型的数,返回值的类型对汇编 的返回值是 类型的数, 类型的数 程序来说也只有dword 一种类型,它永远放在 一种类型, 程序来说也只有 eax 中。如果要返回的内容不是一个 如果要返回的内容不是一个eax所能 所能 容纳的, 容纳的,Win32 API 采用的方法一般是返回一 个指针, 个指针,或者在调用参数中提供一个缓冲区地 干脆把数据直接返回到缓冲区中去。 址,干脆把数据直接返回到缓冲区中去。
.REPEAT MOV AH, 0H INT 16H .BREAK .IF AL==CR MOV [BX],AL INC BX .UNTILCXZ .EXIT 0 END
微机原理与接口技术 第4章 汇编语言程序设计

64 0D 0A 24 × 06 × ×
低
高
⑵ 字定义语句DW 定义语句 格式: 变量名 变量名] 初值表> 格式:[变量名 DW <初值表 初值表 功能:初值表中的每一项占一个字单元 字单元, 功能:初值表中的每一项占一个字单元, 它们从变量名(符号地址)开始按字连续存放。 它们从变量名(符号地址)开始按字连续存放。 例:FLAG DW 2FCDH,24H , DW ?
2.符号常量定义伪指令EQU、= 符号常量定义伪指令EQU、 EQU
等价语句EQU ⑴ 等价语句 格式: 常量名 常量名> 表达式> 格式:<常量名 EQU <表达式 表达式 功能: 功能:将表达式的值赋给符号常量
例:COUNT BUFF HELLO VARW EQU EQU EQU EQU
表达式可以是常 数值表达式、 数、数值表达式、 字符串、 字符串、存储器 符号等
4.1.1 表达式
表达式: 表达式: 是由常量、变量及运算符组成的有意义的式子。 是由常量、变量及运算符组成的有意义的式子。 常数: 常数: 没有任何属性的纯数值。在程序运行中不发生变化。 没有任何属性的纯数值。在程序运行中不发生变化。 0010011B、0A5H、 ZHIFUCHUAN”、 如:10010011B、0A5H、”ZHIFUCHUAN”、5.213E-4 表示存储单元, 变 量:表示存储单元,单元中的数在程序运行期间随时 可以修改。 可以修改。 变量名: 变量名:存放数据单元的符号地址 表示存储单元, 标 号:表示存储单元,单元中存放的是机器指令代码
微机原理和接口技术-4-1汇编语言程序设计

●用途: . 机器指令语句中的立即操作数; . 也可作存贮器操作数的组成部分(位移量V); . 在数据定义伪指令语句中给变量赋初值;
● 分类:
数值常量、符号常量
2015.10 Zuo
5
微机原理与接口技术
Chapter 4汇编语言程序设计
1.常量与数值表达式——常量
符号常量的定义:
2015.10 Zuo
23
微机原理与接口技术
Chapter 4汇编语言程序设计
2. 变量、标号与地址表达式——标号
(2) 标号
● 标号:是机器指令语句存放地址的符号表示,也可以是 子程序名,即子程序入口地址的符号表示;在代码段中 定义和引用。
● 标号的属性: ①标号的段属性:标号的段属性是指定义该标号所在段
2015.10 Zuo
12
微机原理与接口技术
Chapter 4汇编语言程序设计
2. 变量、标号与地址表达式——变量
②变量的定义
一般在数据段或附加数据段中使用数据定义伪指令 DB、DW、DD、DQ和DT来定义 格式: [变量名] 数据定义伪指令 表达式[,…] 功能: 定义了一变量,并开辟了由变量属性所决定 的一 片连续存储区,其存储区
DD
.FWORD (3个字)
DF
.QWORD (4个字)
DQ
.TBYTE (10个字节)
DT
例: BUF DB ‘ABCD12EF……’ ; BUF的类型为字节
ARR DW 10,-60,189
;ARR的类型为字
TT DD 0A57BD36H
;TT的类型为双字
K DB 1234H
2015.10 Zuo
微机原理与接口技术第4章 8086汇编语言程序设计

参与关系运算的必须是两个数值或同一段中的两个存储单
元地址,但运算结果只可能是两个特定的数值之一:当关系不
பைடு நூலகம்
成 立 ( 假 ) 时 , 结 果 为 0( 全 0) ; 当 关 系 成 立 ( 真 ) 时 , 结 果 为
0FFFFH(全1)。例如: MOV AX,4 EQ 3 MOV AX,4 NE 3 ;关系不成立,故(AX)←0 ;关系成立,故(AX)←0FFFFH
CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV CX,5 ; 运算次数为5 MOV SI,0 CLC LOOPER: MOV AH,4CH MOV AL,DATA2[SI] INT 21H ADC DATA1[SI],AL INC SI CODE ENDS DEC CX END START JNZ LOOPER
VAR DW ? 10 DUP(?) ;变量VAR的类型为字 ;变量ARRAY的类型为双字
ARRAY DD STR DB
'THIS IS TEST' ;变量STR的类型为字节
MOV
MOV MOV
…
AX,TYPE VAR
BX,TYPE ARRAY CX,TYPE STR
;(AX)←2
;(BX)←4 ;(CX)←1
② 标号的偏移量属性表示标号所在段的起始地址到定义该
标号的地址之间的字节数。偏移量是一个16位无符号数。
③ 标号的类型属性有两种:NEAR和FAR。前一种标号可 以在段内被引用,地址指针为2字节;后一种标号可以在其他段 被引用,地址指针为4字节。
伪指令语句中的名字可以是变量名、段名、过程名。
微机原理与接口技术(第四版)课后习题答案(1)

第1章微型计算机系统〔习题1.1〕简答题(2)总线信号分成哪三组信号?(3)PC机主存采用DRAM组成还是SRAM组成?(5)ROM-BIOS是什么?(6)中断是什么?(9)处理器的“取指-译码-执行周期”是指什么?〔解答〕②总线信号分成三组,分别是数据总线、地址总线和控制总线。
③ PC机主存采用DRAM组成。
⑤ ROM-BIOS是“基本输入输出系统”,操作系统通过对BIOS的调用驱动各硬件设备,用户也可以在应用程序中调用BIOS中的许多功能。
⑥中断是CPU正常执行程序的流程被某种原因打断、并暂时停止,转向执行事先安排好的一段处理程序,待该处理程序结束后仍返回被中断的指令继续执行的过程。
⑨指令的处理过程。
处理器的“取指—译码—执行周期”是指处理器从主存储器读取指令(简称取指),翻译指令代码的功能(简称译码),然后执行指令所规定的操作(简称执行)的过程。
〔习题1.3〕填空题(2)Intel 8086支持___________容量主存空间,80486支持___________容量主存空间。
(3)二进制16位共有___________个编码组合,如果一位对应处理器一个地址信号,16位地址信号共能寻址___________容量主存空间。
(9)最初由公司采用Intel 8088处理器和()操作系统推出PC 机。
② 1MB,4GB③ 216,64KB(9)IBM,DOS〔习题1.4〕说明微型计算机系统的硬件组成及各部分作用。
〔解答〕CPU:CPU也称处理器,是微机的核心。
它采用大规模集成电路芯片,芯片内集成了控制器、运算器和若干高速存储单元(即寄存器)。
处理器及其支持电路构成了微机系统的控制中心,对系统的各个部件进行统一的协调和控制。
存储器:存储器是存放程序和数据的部件。
外部设备:外部设备是指可与微机进行交互的输入(Input)设备和输出(Output)设备,也称I/O设备。
I/O设备通过I/O接口与主机连接。
微机原理与接口技术 第4章 汇编语言程序设计
5
系统功能调用入口 (同INT 21H)
4
程序终止处理程序地 址(INT 22H)
CTRL_BREAK中 断
4
出 口 地 址 ( INT
•SP指向程序尾部,栈长度256字 节。
+12H
23H)
4
标准错误出口地址 (INT 24H)
+16H
22
保留
+2CH
48
DOS专 用 ( 前 两 个 字 节环境块段地址)
PUSH DS
-D 159B:0 0F
159B:0000 48 65 6C 6C 6F 20 57 6F-72 6C 64 21 0A 0D 24 00 Hello World!..$.
-U 159C:0 4
159C:0000 1E
PUSH DS
159C:0001 33C0
XOR AX, AX
159C:0003 50
1、定位类型
指明内存中以何种类型的边界开始该段
PAGE
段起始地址的最低8数必须为0
PARA(默认) 段起始地址的最低4位必须为0
WORD
该段必须从字的边界开始,地址必须为偶数
BYTE
从任何地址开始
2、连接方式
本段与其它段的关系
NONE(默认)本段与其它段逻辑上无关,每段都有自己的基地址
PUBLIC
与其他同名同‘类别’的段连接在一起,使用一个共同的基地址
4.2 汇编语言源程序的结构
4.2.1 汇编语言的语句格式 两类汇编语言语句: 1、执行性语句(一般性执行性语言和宏指令),产生机器
指令代码
[标号:] 指令助记符 [操作数] [;注释] • 标号代表该行指令的起始地址 • 注释可以省略
微机原理与接口技术第四章 汇编语言程序设计说明
格式: 格式: 名字 伪指令指示符
操作数, 操作数,操作数 ;注释
关于汇编语言程序的几点说明
标号、名字与标识符 标号——用于硬指令的标识符,后跟冒号分隔。 标号——用于硬指令的标识符,后跟冒号分隔。 ——用于硬指令的标识符 名字——用于伪指令的标识符,后跟空格或制表符分隔,后面没有冒号。 名字——用于伪指令的标识符,后跟空格或制表符分隔,后面没有冒号。 ——用于伪指令的标识符 标识符(Identifier)——最多由31个字母、数字及规定的特殊符号(如 _、 标识符(Identifier)——最多由31个字母、数字及规定的特殊符号( 最多由31个字母 $、?、@)组成,不能以数字开头。默认情况下,汇编程序不区别标识符中 组成,不能以数字开头。默认情况下, 的字母大小写。 的字母大小写。 在一个程序中,每个标识符具有唯一的定义, 在一个程序中,每个标识符具有唯一的定义,并不能采用该汇编语言所定义的 保留字。 保留字。
关于汇编语言程序的几点说明
操作数与参数
处理器指令的操作数可以是立即数、寄存器和存储单元。 处理器指令的操作数可以是立即数、寄存器和存储单元。 伪指令的参数可以是常数、变量名、表达式等,可以有多个, 伪指令的参数可以是常数、变量名、表达式等,可以有多个, 参数之间用逗号分隔。 参数之间用逗号分隔。
关于汇编语言程序的几点说明
START:
NEXT:
MOV AX,DATA ;送数据段段地址 MOV DS,AX MOV AX,STACK ;送堆栈段段地址 MOV SS,AX MOV SP, OFFSET TOP ;堆栈段偏移量送SP MOV BX,OFFSET TABLE ;平方表有效地址送BX MOV DX,OFFSET BUF ;提示输入一个数 MOV AH,9 ; 9号功能调用,(显示字符串) INT 21 MOV AH,1 ;1号功能调用,(输入字符并显示) INT 21 ;键入数送入AL MOV AH,0 AND AL, 0FH ;屏蔽高四位 ADD BX,AX ;表首加偏移量 MOV AL,[BX] ;查表得平方值送AL MOV AH,4CH INT 21H RET ENDP ENDS END START ;带参数返回DOS ;返回DOS ;过程MAIN结束 ;代码段结束 ;汇编结束
微机原理与接口技术课后答案
第1章微型计算机系统概述1. 简述微型计算机系统的组成。
2. 简述计算机软件的分类及操作系统的作用。
3. CPU是什么?写出Intel微处理器的家族成员。
4. 写出10条以上常用的DOS操作命令。
[参考答案]1.答:微型计算机系统由硬件和软件两大部分组成,硬件又可细分为主机(由CPU、存储器、控制电路、接口等构成)、输入设备(如键盘)和输出设备(如显示器);软件可细分为系统软件(如操作系统)和应用软件。
3.答CPU(Central Processing Unit中央处理单元)是计算机的核心部件,它包括控制器和算术逻辑运算部件等。
Intel 微处理器的家族成员有:8088/8086、80186、80286、80386、80486、Pentium(80586)、Pentium Ⅱ、Pentium Ⅲ 和Pentium IV。
第2章计算机中的数制和码制1. 将下列十进制数转换成二进制数:(1) 49;(2)73.8125;(3) 79.752. 将二进制数变换成十六进制数:(1)101101B;(2)1101001011B;(3)1111111111111101B;(4)100000010101B;(5)1111111B;(6)10000000001B3. 将十六进制数变换成二进制数和十进制数:(1)FAH;(2)5BH;(3)78A1H;(4)FFFFH; (5) 34.2AH;(6)B8.93H4. 将下列十进制数转换成十六进制数:(1)39;(2)299.34375;(3)54.56255. 将下列二进制数转换成十进制数:(1)10110.101B;(2)10010010.001B;(3)11010.1101B6. 计算(按原进制运算):(1)10001101B+11010B;(2)10111B+11100101B;(3)1011110B-1110B;(4)124AH+78FH;(5)5673H+123H;(6)1000H-F5CH;7. 已知a=1011B,b=11001B,c=100110B, 按二进制完成下列运算,并用十进制运算检查计算结果:(1)a+b;(2)c-a-b;(3)a·b;(4)c/b8. 已知a=00111000B, b=11000111B, 计算下列逻辑运算:(1)a AND b;(2)a OR b;(3)a XOR b;(4)NOT a9. 设机器字长为8位,写出下列各数的原码和补码:(1)+1010101B;(2)-1010101B;(3)+1111111B;(4)-1111111B;(5)+1000000B;(6)-1000000B10. 写出下列十进制数的二进制补码表示(设机器字长为8位):(1)15;(2)-1;(3)117;(4)0;(4)-15;(5)127;(6)-128;(7)8011. 设机器字长为8位,先将下列各数表示成二进制补码,然后按补码进行运算,并用十进制数运算进行检验:(1)87-73;(2)87+(-73);(3)87-(-73);(4)(-87)+73;(5)(-87)-73;(6)(-87)-(-73);12. 已知a,b,c,d为二进制补码:a=00110010B, b=01001010B, c=11101001B, d=10111010B, 计算:(1)a+b;(2)a+c;(3)c+b;(4)c+d;(5)a-b;(6)c-a;(7)d-c;(8)a+d-c13. 设下列四组为8位二进制补码表示的十六进制数,计算a+b和a-b,并判断其结果是否溢出:(1)a=37H, b=57H; (2)a=0B7H, b=0D7H;(3)a=0F7H, b=0D7H; (4)a=37H, b=0C7H14. 求下列组合BCD数的二进制和十六进制表示形式:(1)3251(2)12907(3)ABCD(4)abcd15. 将下列算式中的十进制数表示成组合BCD码进行运算,并用加6/减6修正其结果:(1)38+42;(2)56+77;(3)99+88;(4)34+69;(5)38-42;(6)77-56;(7)15-76;(8)89-2316. 将下列字符串表示成相应的ASCII码(用十六进制数表示):(1)Example 1;(2)Jinan University;(3)-108.652;(4)How are you?;(5)Computer(6)Internet Web17. 将下列字符串表示成相应的ASCII码(用十六进制数表示):(1)Hello(2)123<CR>456;(注:<CR>表示回车)(3)ASCII;(4)The number is 2315[参考答案]1.解:(1)49=0011 0001B (2)73.8125=0100 1001.1101B(3)79.75=0100 1111.11B3. 解:(1)FAH=1111 1010B=250D (2)5BH=0101 1011B=91D(3)78A1H=0111 1000 1010 0001B=30881D(4)FFFFH=1111 1111 1111 1111B=65535D5. 解:(1)10110.101B=22.625 (2)10010010.001B=146.0625(3)11010.1101B=26.81257. 解:a=1011B=11, b=11001B=25, c=100110B=38(1)a+b=100100B=36 (2)c-a-b=10B=2(3)a·b=100010011B=275 (4)c/b=1……1101B(=13)9. 解:(1)+1010101B 原码01010101B 补码01010101B(2)-1010101B 原码11010101B 补码10101011B(3)+1111111B 原码01111111B 补码01111111B(4)-1111111B 原码11111111B 补码10000001B(5)+1000000B 原码 01000000B 补码01000000B(6)-1000000B 原码 11000000B 补码11000000B11. 解:按补码表示+87=0101 0111B;+73=0100 1001B;-87=1010 1001B;-73=1011 0111B(1)87-73=0101 0111B-0100 1001B=1110B=14(2)87+(-73)=0101 0111B+1011 0111B=[1]0000 1110B=14(舍去进位)(3)87-(-73)=0101 0111B-1011 0111B=[-1]1010 0000B=-96(溢出)(4)(-87)+73=1010 1001B+0100 1001B=1111 0010B=-14(5)(-87)-73=1010 1001B-0100 1001B=[-1]0110 0000B=96(溢出)(6)(-87)-(-73)=1010 1001B-1011 0111B=1111 0010B=-1413. 解:(1)a=37H, b=57H; a+b=8EH; a-b=[-1]E0H=-32(2)a=0B7H, b=0D7H; a+b=[1]8EH=-114; a-b=[-1]E0H=-32(3)a=0F7H, b=0D7H; a+b=[1]CEH=-50; a-b=20H=32(4)a=37H, b=0C7H; a+b=FEH=-2; a-b=[-1]70H=11215. 解:(1)将38、42表示成组合BCD码:38H、42H,然后按二进制进行运算,并根据运算过程中的AF,CF进行加6/减6修正。
第4章_汇编语言程序设计 微机原理与接口技术 清华大学出版社
- 9-
目录
上页
下页
结束
第4章 汇编语言程序设计
4.2 汇编语言基本语法
3.关系运算符 关系运算符有:EQ(相等)、LT(小于)、LE(小于等于)、GT (大于)、GE(大于等于)NE(不等于)。 关系运算符要有两个运算对象。两个运算对象要么都是数值、要 么都是同一个段内的地址。运算结果为真时,表示为0FFFFH,运算结 果为假时,表示为0000H。 指令MOV BX,32 EQ 45 等价于MOV BX,0 指令MOV BX,56 GT 30 等价于MOV BX,0FFFFH
- 6-
目录
上页
下页
结束
第4章 汇编语言程序设计
4.2 汇编语言基本语法
2.变量
是存储器中某个数据区的名字,因此在指令中可以作为存 储器操作数,其有三种属性。 段值:指变量所在段的段基址。 段内偏移地址:指变量地址与所在段首地址之间的地址偏 移字节数。 类型:指变量中每个元素所包含的字节数。例如类型有: 字节变量(BYTE)、字变量(WORD)、双字变量(DWORD) 等。 在同一个程序中,同样的标号或变量的定义只允许出现一 次,否则汇编程序会指示出错。
- 5-
目录
上页
下页
结束
第4章 汇编语言程序设计
4.2 汇编语言基本语法
4.2.1 常量、变量与标号 1.常量 (1)数值常量 二进制数后缀为B。如:1101B 八进制数后缀为O或Q。如:76Q,1037O 十进制数后缀为D。对于十进制数可以省掉后缀,如:925D,391 十六进制数后缀为H。对于十六进制数,当以A~F开头时,前面加数 字0,以避免和名字混淆。如:3CH,0AFH (2)字符串常量 包含在单引号中的若干个字符形成字符串常量,字符串在计算机中存 储的是相应字符的ASCLL码。如‘A’的值是41H,‘AB’的值是4142H等。 (3)符号常量 常量用符号名来代替就是符号常量。 如:用COUNT EQU 3或COUNT=3定义后COUNT就是一个符号常量,与数 值常量3等价。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
COUNT = 123 COUNT = COUNT +1
(4) 表达式(常量表达式)
表达式一般是由运算符连接的各种常量所构成 汇编程序在汇编过程中计算表达式,最终得到 一个确定的数值,所以也是常量 表达式的数值在程序运行前的汇编阶段计算, 所以组成表达式的各部分必须在汇编时就能确 定 经常使用的是加减乘除(+ - * / ) 例如:
微机原理与接口技术
第四章 汇编语言程序设计
主要内容
汇编语言的特点和编译过程
汇编语言源程序格式
指示性语句
系统功能调用方法 汇编程序设计方法
综合举例
汇编语言的特点和编译过程
汇编语言对机器的依赖性很大,每种机器都有他专用的汇编语 言,低级语言,编程困难。 汇编指令是符号化的机器指令,和机器指令一一对应 汇编指令的目标代码占用的内存少,执行速度快,效率高,实 时性强。 可以直接操作计算机硬件,例如寄存器。 用汇编语言编写的程序为“源程序”,扩展名为“.asm”, 可以用各种文本编辑软件编写。 源文件经过“编译”,翻译成计算机可以识别和运行的二进制 代码(目标程序,也称为OBJ文件)。完成汇编任务的程序 称为“汇编程序”。常用的汇编程序为MASM.EXE。 目标程序还不能直接被计算机运行,需要经过“连接程序”, 形成可执行程序(.EXE),才能被计算机运行。
常量、变量和标号
汇编语言的数据可以简单分为常量和变量 常量可以作为指令的立即数或伪指令的参数, 变量主要作为存储器操作数 汇编语言语句中的名字和标号具有逻辑地址 和类型属性,主要用做地址操作数,也可以 作为立即数和存储器操作数
常量
常量表示一个固定的数值,它又分成多种形式, 可以以多种数制及字符形式出现。 1. 数字常量 (2、8、10、16进制数) 2. 字符串 3. 符号常量 4. 数值表达式
汇编语言的语句格式
指令性语句——指令性语句用于表达处理器指 令(我们上一章学习的各条指令),汇编后对 应一条指令代码(目标代码),对应着CPU的 一种操作。因而是可执行语句
[标号:] <指令助记符> [操作数] [;注释]
指示性语句——指示性语句指示源程序如何汇 编、段和变量怎样定义、过程怎么设置,也称 为伪指令(指示性、引导性),在汇编时运行,在 汇编阶段已经全部完成,在目标程序中,是不 存在伪指令的。是不可执行语句
dw 8000h,?,'AB' equ 64h dw maxint dw maxint dup(0)
字变量定义 实例
P116 例题4.7
ADDR1 DB ‘AB’ ADDR2 DW ‘AB’
ADDR1 ADDR2
41H 42H
低地址 高地址
42H
41H
双字变量的定义DD
DD伪指令用于分配一个或多个双字单元, 并可以将它们用初值表初始化为指定值 初值表中每个数据是一个32位的双字量:
(1) 数字常量
指由10、16、2和8进制形式表达的数值,各种进 制的数据以后缀字母区分,默认不加后缀字母的 是十进制数
十进制 由0 ~ 9数字组成,以字母D(d) 结尾(缺省情况可以省略) 100,255D 64H,0FFH 0B800H 01100100B 76Q,335O
由0 ~ 9、A ~ F数字组成,以字母 十六进制 H(h)结尾,以字母开头的常数 需要加一个前导0 由0和1两个数字组成,以字母B(b) 二进制 结尾 八进制 由0~7数字组成,以字母O或Q结尾
(1) 变量的定义
变量定义的汇编语言格式为:
变量名 伪指令 初值表 变量名为用户自定义标识符,表示初值表首
元素的逻辑地址,常称为符号地址。变量名也 可以没有 初值表是用逗号分隔的参数,主要由常量、数 值表达式或“?”组成。其中“?”表示未赋 初值 多个存储单元如果初值相同,可以用复制操作 符DUP进行定义:
及规定的特殊符号(如 _、$、?、@)组成,不 能以数字开头。 默认情况下,汇编程序不区别标识符中的字母大 小写 一个源程序中,每个标识符的定义是唯一的,还 不能是汇编语言采用的保留字和内部寄存器名。
保留字
保留字(Reserved Word)是汇编程序已 经利用的标识符(也称为关键字),主要 有:
注释
语句中由分号“;”开始的部分为注释内容, 用以增加源程序的可读性 必要时,一个语句行也可以由分号开始作 为阶段性注释 汇编程序在翻译源程序时将跳过该部分, 不对它们做任何处理
分隔符
语句的4个组成部分要用分隔符分开 标号后用冒号:,注释前用分号; 操作数之间和参数之间使用逗号分隔 其他部分通常采用空格或制表符 多个空格和制表符的作用与一个相同
;数据段
X Y
Байду номын сангаас
db 'a',-5 db 2 dup(100),? db 'ABC'
字节变量定义实 例
字节变量的应用
mov al,X ;此处X表示它的第1个数据,故AL←'a' dec X+1 ;对X为始的第2个数据减1,故成为-6 mov Y,al ;现在Y这个字符串成为 'aBC'
字变量的定义DW
变量定义伪指令有DB、DW、DD等
重复次数 DUP(重复参数)
字节变量的定义DB
DB伪指令用于分配一个或多个字节单元, 并可以将它们用初值表初始化为指定值 初值表中每个数据一定是字节量,存放一 个8位数据: 可以是0~255的无符号数 或是-128~+127带符号数 也可以是字符串常数
;内存中数值依次为FFH,5,0AH
db ?,2 dup(20h)
;预留一个字节空间,重复定义了2个数值20H
wvar1 dw 2010h,4*4
;字变量:两个数据是2010H、0010H,共占4个字节
wvar2 dw ?
;wvar2是没有初值的字变量
变量的定义(续)
dvar dd 12347777h,87651111h,?
[名字] <伪指令助记符> [参数] [;注释]
每个部分称为“项”或“域”、“场”。标号 后有:,加<>的部分不可缺少。
指令与伪指令
指令(Instruction)
让CPU产生动作,在程序执行时才处理。 指令就是第3章学习的处理器指令,与具体的处理器 有关、与汇编程序无关。
伪指令(Directive)
汇编语言源程序格式
完整的汇编语言源程序由逻辑段组成。
一个汇编语言源程序可以包含若干个代码段、数据段、附
加段或堆栈段。 段与段之间的顺序可随意排列。 需独立运行的程序必须包含一个代码段,并指示程序执行 的起始点,一个程序只有一个起始点。 通常,程序还需要一个堆栈段。 段由若干语句组成,一条语句通常写成一行。
指令助记符——例如:MOV、ADD 伪指令助记符——例如:DB、DW 操作符——例如:OFFSET、PTR 寄存器名——例如:AX、CS
汇编语言大小写不敏感
操作数和参数
处理器指令的操作数可以是立即数、寄存器和 存储单元 伪指令的参数可以是常量、变量、表达式等, 可以有多个,参数之间用逗号分隔
mov ax,3*4+5 and ax, 3 and 5
;等价于:mov ax,17 ;等价于:and ax, 1
变量
变量实质上是指内存单元的数据,是对内存单元
所起的名字,变量名实际上是内存单元的符号地 址。虽然内存单元地址不变,但其中存放的数据 可以改变 变量需要事先定义才能使用 变量定义(Define)伪指令为变量申请若干个固 定长度(字节、字、双字等)的存储空间,并可 以同时将相应的存储单元初始化 定义后的变量可以利用变量名等方法引用其中的 数据,即变量的数值
;双字变量:2个双字数据,一个双字空间
abc db ’a’,’b’,’c’,? ;定义字符,实际是字节变量 maxint equ 0ah ;符号常量:maxint=10 string db ’ABCDEFGHIJ’
;定义字符串:使用字节定义DB伪指令
crlfs db 13,10,’$’
;回车符0DH、换行符0AH和字符'$'=24H
可以是有符号或无符号的32位整数 也可以用来表达16位段地址(高位字)和16位的 偏移地址(低位字)的远指针
vardd DD 0,?,12345678h farpoint DD 00400078h 如果DD后操作数是变量名,表示把变量名 的段地址和偏移地址存入对应的双字单元
(2)变量的应用
变量具有存储单元的逻辑地址 程序代码中
(2) 字符串
字符串常量是用单引号括起来的单个字符 或多个字符 其数值是每个字符对应的ASCII码值 例如: ‘d’(等于64H) ‘AB’(等于4142H) ‘Hello, Assembly !’
(3) 符号常量
符号常量使用标识符表达一个数值 用来为常量定义符号名 符号定义伪指令有“等价EQU”和“等号=”:
符号名 EQU 数值表达式(和指令) 符号名 = 数值表达式 EQU不能重复定义符号名,但“=”允许 重复定义(定义一次,再定义一次)。例如: X=7 ;等效于:X equ 7 X = X+5 ;“X EQU X+5”是错误的
举例
NUMBER COUNT ADDR MV STRW EQU EQU EQU EQU EQU 200 6*9 ES:[DI+2] MOV WORD PTR STRING
不产生CPU动作,在程序执行前由汇编程序处理。 伪指令与具体的处理器类型无关,但与汇编程序有关。 不同版本的汇编程序支持不同的伪指令。
指令和伪指令采用易于记忆的符合 表达,这就是助记符