MAsM能否汇编不完整的汇编语言程序

MAsM能否汇编不完整的汇编语言程序,第1张

MAsM应该不能汇编不完整的汇编语言程序,会出现运行错误。用汇编语言编写的源程序也需要翻译成目标程序才茄燃能被机器执行。这个翻译过程称为汇编,完成汇编任务的程序称为厅虚汇编程序。宏汇编程序(MASM)是具有宏加工功能的汇编程序。可以用它定义含参数的程序段,在使用的位置上调用它们,汇编时将进行宏(指令颤伏虚)展开,把宏定义所预先定义的指令目标代码插在该位置上。

一、功能和作用。

这个程序没什么正经功能,只是把从数据段变量dat1取来的字数据放到寄存器里,左移来、左移去的,没做实际性的事情。

但是,这个程序的作激汪用不小,就是让初学宏指令的学员了解和掌握宏指令是怎样定义、使用和展开的。

二、定义了宏指令之后,应用一次,便会展开一次,但不是把宏指令的定义全部展开。凡可执行指令,应和铅塌用一次展开一次;伪指令部分,则看不到展开,或者说是隐含的展开。标号部分,则要根据使用宏指令的位置,相对浮动的。编译后,整体程序如下:

0B4B:0000 1E PUSH DS

0B4B:0001 33C0 XOR AX,AX

0B4B:0003 50 PUSH AX

0B4B:0004 B84A0B MOV AX,0B4A

0B4B:0007 8ED8 MOV DS,AX

0B4B:0009 8B160000 MOV DX,[0000]

0B4B:000D 8AC6 MOV AL,DH

0B4B:000F B104 MOV CL,04

0B4B:0011 D2E0 SHL AL,CL

0B4B:0013 8ADE MOV BL,DH

0B4B:0015 80E30F AND BL,0F

0B4B:0018 8AEA MOV CH,DL

0B4B:001A B104 MOV CL,04

0B4B:001C D2E0 SHL AL,CL

0B4B:001E 8AD2 MOV DL,DL

0B4B:0020 80E20F AND DL,0F

0B4B:0023 8ACD MOV CL,CH

0B4B:0025 CB RETF

1、程序定义的第一个宏指令是:prohead

prohead macro

assume cs:code,ds:data,es:data

main proc far

start:

push ds

xor ax,ax

push ax

mov ax,data

mov ds,ax

endm

在实体程序中只用了一次,展开如下:

0B4B:0000 1E PUSH DS

0B4B:0001 33C0 XOR AX,AX

0B4B:0003 50 PUSH AX

0B4B:0004 B84A0B MOV AX,0B4A

0B4B:0007 8ED8 MOV DS,AX

展开后,根本看不到伪指令

assume cs:code,ds:data,es:data

main proc far

的影子。

这个宏指令,因为没有定义形式参数,所以,还是很好理解的。

2、程序定义的第二个宏指令是:shift,有3个形式参数,使唤圆用时就要根据实际参数的情况,对号入座,用对应的实际参数替换形式参数。

shift macro opr1,opr2,opr3

mov opr1,opr2

mov cl,4

shl al,cl

mov opr3,opr2

and opr3,0fh

endm

在实体程序中用了两次。第一次使用时,形式为:shift al,dh,bl,展开如下:

0B4B:000D 8AC6 MOV AL,DH

0B4B:000F B104 MOV CL,04

0B4B:0011 D2E0 SHL AL,CL

0B4B:0013 8ADE MOV BL,DH

0B4B:0015 80E30F AND BL,0F

第二次使用时,形式为:shift ch,dl,dl,展开如下:

0B4B:0018 8AEA MOV CH,DL

0B4B:001A B104 MOV CL,04

0B4B:001C D2E0 SHL AL,CL

0B4B:001E 8AD2 MOV DL,DL

0B4B:0020 80E20F AND DL,0F

详细的,就说这些吧。除非你是汇编语言的理论家,否则,不会熟练使用DEBUG.EXE,必然是不会理解到深层次的。

《80X86宏汇编语言程序设计教程》以目前广泛使用的Pc机为平台,详细介绍了宏汇编语言的基本概念、程序设计的基本方法与技巧。全书共10章,主要内容包括:宏汇编语言、程序设计的基本技巧、输入/输出程序设计、32位CPU扩展功能、汇编语言上机内容与要求。《80X86宏汇编语言程序设计教程》内容详实,叙述细腻易懂,在章节安排上由浅入深,指令介绍与指令应用紧密结合,使得知识易于理解和掌握。《80X86宏汇编语言程序设计教程》可作为高等院校计算机及相关专业“汇编语言程序设计”课程教材,也可作为独立学院、高职高专计算机及相竖迟困关专业、有关工程技术人员的教学参考书。 编辑推荐《80X86宏汇编语言程序设计教程》:计算机科学与技术系列教材 目录

第1章 基础知识

1.1 计算机语言概述

1.1.1 机器语言

1.1.2 汇编语言

1.1.3 高级语言

1.1.4 非过程性语言

1.1.5 汇编语言的特点

1.2 计算机中数据的表示方法

1.2.1 进位计数制

1.2.2 数制转换

1.2.3 计算机中数据的表示

习题1

第2章 8086/8088计算机系统组织

2.1 8086/8088CPU的内部结构

2.1.1 8086CPU的功能结构

2.1.2 8086CPU的寄存器结构

2.2 存储器组织

2.2.1 存储器的地址和内容

2.2.2 存储器的分段

2.3 堆栈

2.3.1 堆栈的特点

2.3.2 堆栈的作用

2.3.3 堆栈的 *** 作

习题2

第3章 汇编语言语法与寻址方式

3.1 汇编语言语句类型及格式

3.1.1 语句类型

3.1.2 指令语句格式

3.2 伪指令

3.2.1 段定义伪指令

3.2.2 数据定义

3.2.3 符号定义伪指令

3.2.4 与地址有关的伪指令

3.2.5 常用伪指令

3.3 表达式

3.3.1 常量余念

3.3.2 数值表达式

3.3.3 地址表达式

3.4 寻址方式

3.4.1 立即数寻址方式

3.4.2 寄存器寻址方式

3.4.3 存储器型寻址方式

3.4.4 外设型寻址方式

3.5 汇编语言源程序结构

3.6 常用DOS功能调用

习题3

第4章 汇编语言指令系统

4.1 数据传送指令

4.2 算术运算指令

4.3 位 *** 作指令

4.4 处理器控制指令

习题4

第5章 汇编语言基本程序设计

5.1 汇编语言程序设计步骤

5.2 顺序结构程序设计

5.3 分支结构程序设计

5.3.1 转移地址的寻址方式

5.3.2 无条件转移指令

5.3.3 条件转移指令

5.3.4 分支结构程序设计

5.4 循环结构程序设计

5.4.1 循环控制结构

5.4.2 循环控制指令

5.4.3 循环程序设计方法

5.4.4 多重循旦州环程序设计举例

5.5 串 *** 作程序设计

5.5.1 串 *** 作概述

5.5.2 串 *** 作指令及程序设计

习题5

第6章 汇编语言模块化程序设计

6.1 子程序设计

6.1.1 子程序概述

6.1.2 子程序的调用与返回指令

6.1.3 子程序的定义

6.1.4 主程序与子程序的参数传递

6.1.5 子程序的嵌套

6.2 模块化程序设计

6.2.1 模块的装配连接

6.2.2 模块问的通信

6.2.3 模块化程序设计举例

习题6

第7章 高级汇编语言程序设计

7.1 宏汇编

7.1.1 宏指令的使用

7.1.2 宏与子程序的区别

7.1.3 与宏有关的伪指令

7.1.4 宏库的建立与使用

7.2 重复汇编

7.3 条件汇编

7.4 数据结构

7.5 数据记录

7.6 汇编语言与高级语言的连接

7.6.1 嵌入汇编语言

7.6.2 多模块混合编程

习题7

第8章 输入/输出程序设计

8.1 输入/输出概述

8.1.1 I/O端口的编址方式

8.1.2 数据传送方式

8.2 数据的输入腧出

8.2.1 I/O指令

8.2.2 程序查询I/O方式

8.2.3 中断I/O方式

8.3 键盘输入控制

8.4 屏幕输出控制

8.5 打印机输出控制

8.6 磁盘文件 *** 作

8.6.1 文件概述

8.6.2 文件 *** 作的系统功能调用

8.6.3 文件管理程序设计

习题8

第9章 32位机新增指令及功能

9.1 80386的工作机制

9.1.1 80386CPU的内部结构

9.1.2 80386寄存器

9.1.3 80386存储器管理

9.1.4 存储模型与段的简化定义

9.1.5 80386的寻址方式

9.1.6 80386新增指令

9.2 80486系统

9.2.1 80486CPU结构

9.2.2 80486的内存管理和高速缓存

9.2.3 80486扩充指令

9.3 Pentium系统

9.3.1 PendumCPU结构

9.3.2 Penfium扩充指令

9.4 程序举例

习题9

第10章 实验指导

10.1 汇编语言上机过程及调试工具

10.2 分支程序设计

10.3 循环程序设计

10.4 子程序设计(一)

10.5 子程序设计(二)

10.6 字符处理程序设计

10.7 中断程序设计

10.8 磁盘文件管理程序设计

10.9 模块化程序设计

10.10 综合程序设计

附录A ASCII码表

附录B 调试工具DEBUG

参考文献

…… [看更多目录] 序言《80X86宏汇编语言程序设计教程》是高等院校计算机硬、软件及应用专业学生都必须学习的核心课程之一,它是计算机组成原理、 *** 作系统及其他核心课程的基础课,也是微机原理、单片机应用等课程的学习基础。同时,该课程对于训练学生掌握程序设计技术、熟悉上机 *** 作和程序调试技术都有重要作用。

《80X86宏汇编语言程序设计教程》的内容十分丰富,知识量大,是一门教师普遍感到难教、学生普遍感到难学的课程。为了满足教师和学生的教学需要,作者根据本课程的特点及知识结构,在多年教授这门课程的教学经验的基础上编写了此书,以期能帮助学生快速熟练地掌握相关知识,同时为教师的教学提供指导。

本书共10章,分为两大部分和两个附录,各部分内容如下:

第一部分:第1~9章。详细介绍了16位80X86 CPU的宏汇编程序设计。第1章基础知识,介绍了学习汇编语言程序设计所需的数据编码与运算等若干预备知识。第2章8086/8088计算机内部体系结构,介绍8086/8088 CPU内部结构和存储器管理。第3章汇编语言语法及七种寻址方式,主要介绍了宏汇编语言中的各种符号、表达式、伪指令语句、寻址方式及常用的系统功能调用。第4章汇编语言指令系统,全面介绍了8086指令系统中数据传送指令、算术运算指令、逻辑运算指令、处理器控制指令。第5章汇编语言基本程序设计,系统介绍了程序的三种基本结构(顺序结构、分支结构及循环结构)及串 *** 作指令的设计方法与技巧,同时对实现这些结构的转移指令、循环指令和串指令也作了详细介绍。第6章汇编语言模块化程序设计,介绍了子程序及模块化程序设计。第7章高级汇编语言程序设计,介绍了宏的定义与调用方法、重复汇编、条件汇编等技术,特别介绍了汇编语言与高级语言的混合编程。第8章输入/输出程序设计,介绍了输入/输出数据传送方式、中断技术、软中断程序设计及DOS与BIOS中断调用。第9章32位机新增指令及功能,以典型的32位80386 CPU为例,介绍了32位CPU的工作模式、内部寄存器、内存管理、寻址方式、新增指今等扩展功能。 文摘插图:

1.1.3高级语言

尽管汇编语言比机器语言方便,但汇编语言仍然具有许多不便之处,程序编写的效率远远不能满足需要。1954年,第一个高级语言FORTRAN问世了。高级语言是一种与具体的计算机硬件无关、独立于机器的通用语言,它比较接近人类自然语言的语法及数学表达式,人们用高级语言编程不必了解和熟悉机器的指令系统,更容易被人们掌握和使用。高级语言采用接近自然语言的词汇,其程序的通用性强,易学易用,这些语言面向计算机求解问题的过程,不依赖具体机器,与特定机器相分离。计算机不能直接执行高级语言程序,高级语言程序必须先翻译转换成“目标程序”(即机器语言程序)才能被执行。这种翻译转换工作由被称为“编译程序”的专门软件来完成,其过程如图1.2所示。

高级语言翻译成机器语言有两种方式,一种是先把高级语言程序翻译成机器语言程序,然后在机器上执行,这种翻译称为编译方式,大多数高级语言如PASCAL语言、c语言等都是采用这种方式;另一种方式是直接把高级语言程序在机器上运行,一边解释一边执行,这种翻译方式称为解释,如BASIC语言就采用这种方式。每一种高级语言都有自己的编译程序,在一台计算机上运行某一种高级语言源程序的前提是该计算机系统配置了该语言的编译程序。

高级语言源程序在不对硬件编程时,是在未考虑机器结构的特点下编写的,经过翻译后的目标程序往往不够精练,过于冗长,加大了目标程序的长度,导致存储空间占用较大和执行时间较长。

1.1.4非过程性语言

面向过程的高级语言称为过程性语言,用它编程序必须写出每一步如何进行的全过程。程序设计者必须具体指出执行的每一个细节(例如,输入一个数给某一变量、进行某一公式的运算、进行什么条件判断、执行多少次循环等)。这要求程序设计人员考虑得十分周到,稍有不慎(例如写错一个字母),就会导致程序运行失败。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12562208.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存