理学第4章汇编语言及汇编程序设计课件_第1页
理学第4章汇编语言及汇编程序设计课件_第2页
理学第4章汇编语言及汇编程序设计课件_第3页
理学第4章汇编语言及汇编程序设计课件_第4页
理学第4章汇编语言及汇编程序设计课件_第5页
已阅读5页,还剩66页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《微机原理及应用》主讲教师

玮广东工业大学2第4章汇编语言及汇编程序设计2023/9/19自动化学院自动控制系陈玮第四章汇编语言及汇编程序设计一、概述

二、伪指令三、表达式及运算符四、宏指令五、汇编语言程序的上机过程六、汇编程序的设计过程七、汇编程序基本设计方法八、系统功能调用例题

作业广东工业大学自动化学院自动控制系陈玮一、概述汇编语言是一种面向CPU指令系统的程序设计语言。指令格式:1、标号是指该指令的符号地址,以冒号结束;2、用助记符表示操作码,是指令名称的代表符号,是语句中的关键字,不可缺省;3第4章汇编语言及汇编程序设计2023/9/19广东工业大学自动化学院自动控制系陈玮一、概述(续上页)3、用符号代表操作数或操作数地址。操作数是本指令执行需要的数据。有些指令不需要指明操作数,可以默认;有些指令需要两个操作数;还有些操作数可以用表达式。4、注释项是可选项,用分号开始。4第4章汇编语言及汇编程序设计2023/11/12广东工业大学自动化学院自动控制系陈玮一、概述(续上页)用汇编语言编写的程序称为源程序,常用的汇编程序有ASM-86和宏汇编MASM-86。汇编语言源程序的组成部分:①可以使用CPU指令系统所提供的指令(硬指令);②可以使用各种符合汇编语法的表达式,运算符以及自行定义生成满足需要的目标代码的指令。5第4章汇编语言及汇编程序设计2023/11/12广东工业大学自动化学院自动控制系陈玮1、标号8086/8088汇编语言中使用的标号必须遵循下列规则:(1)大小写字母;

(2)数字0~9;(3)某些特殊字符(@,_,?)(4)第一个字符不能是数字,“?”不能单独作为标号。

(5)标号的有效长度是31;有效标号:START

MY_PROGRAM无效标号:MAIN%

1BETA6第4章汇编语言及汇编程序设计2023/11/12广东工业大学自动化学院自动控制系陈玮二、伪指令伪指令是告诉汇编程序生成目标代码的指令语句。1、符号定义伪指令2、内存数据定义伪指令3、段定义伪指令4、段寄存器说明伪指令5、定位伪指令6、子程序伪指令7、模块定义伪指令8、外部符号定义伪指令9、记录伪指令10、结构伪指令11、块注释伪指令7第4章汇编语言及汇编程序设计2023/11/12广东工业大学自动化学院自动控制系陈玮1、符号定义伪指令EQU伪指令等号(赋值)伪指令

(3)解除符号定义伪指令8第4章汇编语言及汇编程序设计2023/11/12广东工业大学自动化学院自动控制系陈玮(1)EQU伪指令伪指令格式:<符号名>EQU<表达式>指令功能:

给符号名赋值。符号名可以由程序员取定,表达式应该是可以计算得出一个具体值。例:PORT

EQU

88HDATA

EQU

PORT+2;定义符号PORT代表88H;定义符号DATA代表;PORT+2注意:①用EQU定义的符号,不能重新再定义,除非用PURGE伪指令解除;②如果在表达式中用了其他符号,必须事先定义。9第4章汇编语言及汇编程序设计2023/11/12广东工业大学自动化学院自动控制系陈玮(2)等号(赋值)伪指令伪指令格式:<符号名>=<表达式>指令功能:

与EQU类似,唯一的区别是“=”可以随时对符号名赋新值,

而不必使用PURGE伪指令。例:PORT=88H

;定义符号PORT代表88HDATA=PORT+2

;定义符号DATA代表PORT+210第4章汇编语言及汇编程序设计2023/11/12广东工业大学自动化学院自动控制系陈玮(3)解除符号定义伪指令伪指令格式:PURGE

符号1,

符号2,…指令功能:

撤消用EQU赋值的符号名,

以便于赋予新值。例:PURGE

PORT,

DATA;撤消用EQU对PORT、;DATA的赋值11第4章汇编语言及汇编程序设计2023/11/12广东工业大学自动化学院自动控制系陈玮2、内存数据定义伪指令①格式: [变量]命令参数1,参数2,…功能:

数据定义语句用来分配存储单元。数据定义语句的命令有:DBDWDDDQDT定义字节数据定义字数据

定义双字数据定义8字节数据定义10字节数据12第4章汇编语言及汇编程序设计2023/11/12广东工业大学自动化学院自动控制系陈玮2、内存数据定义伪指令②复制操作符格式:<复制次数>DUP

数据1,数据2,…功能:汇编程序把所定义的数据按先后次序连续分配存储空间,所起的名称只代表第一个单元的字符。例题13第4章汇编语言及汇编程序设计2023/11/12广东工业大学自动化学院自动控制系陈玮2、内存数据定义伪指令例:…VAR1

DB

32H,‘ABC’VAR2 DW

1234H,40H,‘AB’DD

12345678HDB

?,11000011BARRY1

DB

2

DUP(0,1)ARRY2 DW

2DUP(?,1)…14第4章汇编语言及汇编程序设计2023/11/12广东工业大学15第4章汇编语言及汇编程序设计2023/11/12自动化学院自动控制系陈玮3、段定义伪指令格式:〈段名〉SEGMENT[定位方式][连接方式][‘类别名’]。。。〈段名〉ENDS功能:用来定义一个段,起始段名必须与结束段名相同。各段的属性意义:(1)定位方式(定位类型):起始地址的边界方式,有4种:PAGE:段起始地址低8位是0,256整除,按页边界定位。PARA:段起始地址低4位是0,16整除,按段边界定位,默认方式。WORD:段起始地址最低位是0,2整除,按字边界定位。BYTE:段起始地址可以是任意值,没有限制。(2)连接方式(组合方式):以何种方式与其他段连接,有6种:NONE:本段与其他段没有关系,有独立的段地址,隐含连接方式。PUBLIC:本段与其他同名同类别段连接起来,形成一个物理段。它们具有相同的段起始地址,但偏移地址不同,连接次序由连接命令指定。广东工业大学16第4章汇编语言及汇编程序设计2023/11/12自动化学院自动控制系陈玮3、段定义伪指令例:下列不同方式下连接后数据在内存的分布情况相同:DATA1

SEGMENT

PUBLICX DB

10HDATA1

ENDSDATA1

SEGMENT

PUBLICY

DW

2020HDATA1

ENDSDATA1

SEGMENTX

DB

10HY

DW

2020HDATA1

ENDS广东工业大学17第4章汇编语言及汇编程序设计2023/11/12自动化学院自动控制系陈玮3、段定义伪指令STACK:本段是堆栈段,连接方式同PUBLIC,至少有一个堆栈段。COMMON:本段与其他同名同类别的段共用一个物理段,程序运行时这 些段产生覆盖。

5)MEMORY:本段定位在其他段之后,即高地址。如果多个这种段,则第一个作为MEMORY段,其他作为COMMON段。6)AT〈表达式〉:段地址为表达式所计算出来的16位数,不能用于代码段。(3)类别名类别名为自定义符,用单引号,同类别段按先后次序连接起来。广东工业大学18第4章汇编语言及汇编程序设计2023/11/12自动化学院自动控制系陈玮4、段寄存器说明伪指令格式:ASSUME

段寄存器:段名1[,段寄存器:段名2,。。。]功能:在汇编时,各个段寄存器所对应的逻辑段基址,除CS外,所有段寄存器实际值还必须用传送指令在执行程序时赋值。典型汇编源程序格式:例:NAME

SAMPLEDATA

SEGMENTX

DB

10HY

DW

2020H。。。DATAENDS

STACK

SEGMENTDW

128DUT(?)STACK

ENDSCODE

SEGMENTASSUME

CS:CODE,DS:DATA

:STACKSTART:MOV

AX,DATAMOV

DS,AXMOV

AX,STACKMOV

SS,AX。。。。

CODE

EDNSEND

START广东工业大学19第4章汇编语言及汇编程序设计2023/11/12自动化学院自动控制系陈玮5、定位伪指令起址定位伪指令

格式:ORG

〈表达式〉功能:程序或数据从表达式指定的偏移地址开始存放。偶地址定位伪指令格式:EVEN功能:程序或数据从偶地址开始存放。DB

‘A’DATA

ENDS例:DATA

SEGMENTZX

DB

10HEVENY

DW

0200HORG

06H广东工业大学20第4章汇编语言及汇编程序设计2023/11/12自动化学院自动控制系陈玮6、子程序定义伪指令格式:〈子程序名〉PROC

[NEAR/FAR]。。。〈子程序名〉ENDPNEAR为段内调用,主程序和子程序在同一段内,只须保存偏移地址,默认方式。FAR为段间调用,主程序和子程序不在同一段内,保存偏移地址和段地址。广东工业大学21第4章汇编语言及汇编程序设计2023/11/12自动化学院自动控制系陈玮7、模块定义伪指令模块开始伪指令格式:NAME

模块名功能:放在源程序开始,用来定义本程序模块的名字。模块名为自定义符模块结束伪指令格式:END

(起始标号/过程名)广东工业大学22第4章汇编语言及汇编程序设计2023/11/12自动化学院自动控制系陈玮8、外部符号定义伪指令外部标号:模块化程序,个模块间常有关联,需相互访问。当某模块访问

另一模块中定义的符号时,必须对这些符号进行说明。这些符号包括变量、符号、常量、标号和子程序名,成为外部标号。公用符号伪指令格式:PUBLIC

〈符号名1〉[,符号名2,。。。]功能:可以被其他模块引用引用符号伪指令格式:EXTRN〈符号名1:类型〉[,符号名2:类型,。。。]功能:当需要引用其他模块的符号时,需用EXTRN伪指令说明。类型包括:BYTE、WORD、DWORD、NEAR、FAR和ABS,需与愿模块中的定义一致。广东工业大学23第4章汇编语言及汇编程序设计2023/11/12自动化学院自动控制系陈玮9、记录伪指令记录定义伪指令格式:记录名RECORE〈字段名1:宽度〉[,字段名2:宽度,。。。]例:PRODUCT

RECORD

SN:4,WORK:1,VR:2记录内存分配伪指令格式:[变量名]记录名〈字段值表〉记录操作符1)WIDTH格式:WIDTH

记录名(或字段名)功能:用于求出记录或字段的宽度。例:MOV

AX,WIDTH

PRODUCT2)MASK格式:MASK

记录字段名功能:给出一个对应于记录长度的8位或16位二进制数,该数中,指定字段名所在的位为1,其余位为0。广东工业大学24第4章汇编语言及汇编程序设计2023/11/12自动化学院自动控制系陈玮9、记录伪指令3)记录字段名记录字段名作为指令的一个操作数单独出现时,表示该字段最低位在记录中的位置,例如:MOV

AH,SN广东工业大学25第4章汇编语言及汇编程序设计2023/11/12自动化学院自动控制系陈玮10、结构伪指令结构定义格式:结构名

STRUC〈数据定义〉。。。结构名ENDS结构分配伪指令结构名〈字段值表〉格式:[变量名](3)结构引用在程序中引用结构变量的某字段,可以采用两种形式:格式:结构变量名,字段名格式:[地址寄存器],字段名广东工业大学26第4章汇编语言及汇编程序设计2023/11/12自动化学院自动控制系陈玮10、块注释伪指令格式:COMMENT

定界符 注释 定界符例:COMMENT

/注释。。。。。。/广东工业大学自动化学院自动控制系陈玮三、表达式及运算符在汇编语言中,指令的操作数除了可以是常数、寄存器、变量和标号外,还可以是表达式。表达式是由常数、寄存器、变量、标号和专用运算符组合而成。在程序汇编时,汇编程序自动把这些表达式计算出来,形成具体的指令操作数。1、常数、变量和标号2、表达式及运算符返回27第4章汇编语言及汇编程序设计2023/11/12广东工业大学自动化学院自动控制系陈玮1、常数、变量和标号常数包括数值型常数和字符型常数。如:12H,1234H,’AB’变量变量代表存放在存储单元中的数据。定义后的变量有三个属性:段属性表示变量所在的逻辑段;偏移量属性表示变量所在逻辑段中的偏移地址;

(3)类型属性表示变量占用的存储单元数,DB、DW、DD、DQ、DT。28第4章汇编语言及汇编程序设计2023/11/12广东工业大学自动化学院自动控制系陈玮1、常数、变量和标号标号是指令目标代码的符号地址。在转移指令中常用标号代替具体转移地址,标号的使用使编写汇编语言程序时,不必考虑程序汇编、连接后系统分配给指令代码的实际地址。标号同样有三个属性:段属性表示指令代码所在的逻辑段;偏移量属性表示指令代码所在的逻辑段中的偏移地址;距离属性表示标号可作段内转移或段间转移(NEAR、FAR)。29第4章汇编语言及汇编程序设计2023/11/12广东工业大学自动化学院自动控制系陈玮2、表达式及运算符表达式由操作数和运算符组成。其中,操作数可以是常数、变量、寄存器和标号。运算符包括算术运算符、逻辑运算符、关系运算符、分析运算符和属性运算符五类运算。注意:运算符的先后次序。30第4章汇编语言及汇编程序设计2023/11/12广东工业大学自动化学院自动控制系陈玮五、汇编语言程序的上机过程建立汇编语言的环境,典型的汇编语言开发环境都包含4种工具:1、编辑程序2、汇编程序3、连接程序4、汇编程序的上机过程31第4章汇编语言及汇编程序设计2023/11/12广东工业大学自动化学院自动控制系陈玮1、编辑程序编辑程序是用来输入汇编语言源程序的工具,包括EDIT.EXE,EDLIN.EXE等;汇编语言是以文本格式保存的;汇编程序的源程序必须以ASM作为扩展名;输入和编辑源程序时必须遵循汇编语言的语法规定。汇编程序的基本结构

例题实际操作:编辑源程序

TEST11.ASM32第4章汇编语言及汇编程序设计2023/11/12广东工业大学自动化学院自动控制系陈玮汇编程序的基本结构DATAA……DATAASTACKA……SEGMENT;数据段内定义各类程序执行需要的相关的数据ENDSSEGMENT;根据具体程序的需要,定义堆栈段供程序执行过程;中保持临时数据ENDSSTACKACODEASEGMENTASSUME

CS:CODEA,DS:DATAA,SS:STACKASTART:

MOVAX,DATAAMOV

DS,AX……

;完成具体操作的指令序列CODEA

ENDSEND

START33第4章汇编语言及汇编程序设计2023/11/12广东工业大学自动化学院自动控制系陈玮实际操作(实现X+Y→Z,源程序文件名:TEST11.ASM)DATA1

SEGMENT;数据段XYZDB

05HDB

04HDB

?DATA1CODE1ENDSSEGMENT

;代码段ASSUME

CS:CODE,DS:DATASTART:MOV

AX,DATAMOV

DS,AX;数据段基址→AX;

AX→DS;内存单元X的数据→AL;内存单元Y的数据+AL→AL,即X+Y→AL;AL→内存单元Z,即求和结果送回ZMOV

AL,XADD

AL,YMOV Z,

ALMOVINTAH,4CH;送功能号21H

;系统功能调用,返回操作系统CODE1

ENDSEND

START34第4章汇编语言及汇编程序设计2023/11/12广东工业大学自动化学院自动控制系陈玮2、汇编程序汇编程序用来把源程序翻译成机器码,包括ASM.EXE,MASM.EXE;汇编程序翻译源程序,产生一个目标代码文件,与源程序文件名相同,扩展名为OBJ。实际操作:产生目标文件TEST11.OBJ35第4章汇编语言及汇编程序设计2023/11/12广东工业大学自动化学院自动控制系陈玮3、连接程序通过汇编产生的是OBJ文件是二进制目标文件,但用的是浮动地址,不能直接运行,必须用连接程序LINK.EXE连接和定位。实际操作:产生可执行文件TEST11.EXE36第4章汇编语言及汇编程序设计2023/11/12广东工业大学自动化学院自动控制系陈玮4、汇编程序的上机过程实际操作演示37第4章汇编语言及汇编程序设计2023/11/12广东工业大学自动化学院自动控制系陈玮;数据段开始;定义一个数据串,数据串规定以$结尾,为了显示’5+4=’data1

segmentx

db

05hy

db

04hz

db

?buff

db

‘5+4=

$‘data1

endscode1segmentassume

cs:code1,ds:data1start:movax,data1mov

ds,axmoval,x

addal,y

movz,

allea

dx,

buffmov

ah,

09hint

21hmov

dl,zadddl,30hmovah,02hint

21Hmovah,4chint

21h;代码段开始;段寄存器说明伪指令;将数据段基址→ax;ax→ds;内存数据x→al;内存数据Y+al→al,即X+Y

→al;al→Z,即X+Y

→Z;装载

buff的有效地址;送功能号;系统功能调用,显示屏显示字符串’5+4=’;将z送dl;将z的值转换成对应的ASCII码值;送功能号;系统功能调用,将x+y的和z以单字符形式在显示屏上显示出来;送功能号;系统功能调用,返回DOS状态code1

endsend

start返回38第4章汇编语言及汇编程序设计2023/11/12广东工业大学自动化学院自动控制系陈玮六、汇编程序的设计过程1、分析问题确定算法2、绘制程序流程图(做作业一定要求)3、编写代码39第4章汇编语言及汇编程序设计2023/11/12广东工业大学自动化学院自动控制系陈玮七、汇编程序基本设计方法1、简单程序

作业2、分支程序3、循环程序4、子程序40第4章汇编语言及汇编程序设计2023/11/12广东工业大学自动化学院自动控制系陈玮1、简单程序简单程序是指顺序结构程序,在程序中不包含任何转移类指令。执行时按指令的先后次序从第一条开始逐条执行,直至程序结束。例题41第4章汇编语言及汇编程序设计2023/11/12广东工业大学自动化学院自动控制系陈玮例题1、有X,Y两个16位数3456H和0ABCDH,求两数之和,并将结果送到Z单元。解:

①编写流程图42第4章汇编语言及汇编程序设计2023/11/12广东工业大学自动化学院自动控制系陈玮例题 程序清单DATA

SEGMENTDW

3456HDW

0ABCDHDW

0DATA

ENDS

;设置数据段,取名DATACODE

SEGMENTASSUME

DS

:DATA,CS:CODESTART

:MOV

AX,DATAMOV

DS,AXLEA

SI,XLEA

DI,

YMOV

AX,[SI]ADD

AX,[DI]MOV

Z,

AXMOV

AH,

4CH;取数码段DATA段址至AX;段地址送DS;将X的有效地址送S1;将Y的有效地址送D1;将X的值送AX;AX+Y的值送回AX;将AX的值送到存储单元Z;设置功能号;系统功能调用,返回DOSINT

21HCODEENDSEND

START43第4章汇编语言及汇编程序设计2023/11/12广东工业大学44第4章汇编语言及汇编程序设计2023/11/12自动化学院自动控制系陈玮作业P.1202、3、5、7、12广东工业大学自动化学院自动控制系陈玮2、分支程序分支程序就是利用转移指令,控制计算机执行某段程序或不执行某段程序。两路分支多路分支例题45第4章汇编语言及汇编程序设计2023/11/12广东工业大学自动化学院自动控制系陈玮例题1、内存中有一个8位带符号数,求其绝对

值,并将结果放回原处。答:编写流程图程序清单46第4章汇编语言及汇编程序设计2023/11/12广东工业大学自动化学院自动控制系陈玮例题 程序清单DATA2

SEGMENTM

DB

05H;第二个程序换成-5,即0fbhDATA2CODE2ENDSSEGMENTASSUMECS:CODE2,DS:DATA2START:DONE:;送段地址至DS;取M的指针;取带符号数;判断符号位;SF=0,转移到DONE;SF=1,AL<0,AL求补;绝对值送回原内存单元;系统功能调用,显示该数值CODE2MOV

AX,DATA2MOV

DS,AXLEA

SI,MMOV

AL,[SI]AND

AL,ALJNSDONENEG

ALMOV

[SI],ALMOV

DL,

[SI]ADD

DL,

30HMOV

AH,

02HINT

21HMOV

AH,4CHINT

21HENDSEND

START47第4章汇编语言及汇编程序设计2023/11/12广东工业大学自动化学院自动控制系陈玮例题2、编写程序实现函数。1 (当X>0)Y=

0 (当X=0)9 (当X<0)解:编写程序清单程序清单48第4章汇编语言及汇编程序设计2023/11/12广东工业大学自动化学院自动控制系陈玮例题 程序清单_数据段;另外两组分别是7FH,00HDATAXYDATAXY

SEGMENTX

DB

8FHY

DB

?ENDS49第4章汇编语言及汇编程序设计2023/11/12广东工业大学自动化学院自动控制系陈玮例题

程序清单_代码段CODE

SEGMENTASSUME

CS:CODE,DS:DATAXYSTART:

MOV

AX,DATAXY;送段地址;取X的指针;将X的值送AL;自身与,取符号标志位;SF=0,转移到OTHER;SF=1,则X<0;ZF=0转移到PLUS;ZF=1,则X=0;SF=0,ZF=0,则X>0;系统功能调用,显示Y的值MOV

DS,AXLEA

SI,

XMOV

AL,[SI]AND

AL,

ALJNSOTHERMOV

Y,

09HJMP

DONEOTHER:

JNZ

PLUSMOV

Y,00HJMP

DONEPLUS:

MOV

Y,01HDONE:

MOV

DL,

YADD

DL,

30HMOV

AH,

02HINT

21HMOV

AH,4CHINT

21HCODE2

ENDSEND

START50第4章汇编语言及汇编程序设计2023/11/12广东工业大学自动化学院自动控制系陈玮3、循环程序循环程序就是控制计算机反

复执行一段指令序列的程序结构。例题零次循环结构非零次循环结构51第4章汇编语言及汇编程序设计2023/11/12广东工业大学自动化学院自动控制系陈玮1、统计字节数据Z的1的个数,将结果放在RESULT内。例题解:编写流程图程序清单52第4章汇编语言及汇编程序设计2023/11/12广东工业大学自动化学院自动控制系陈玮例题 程序清单——数据段DATAXY

SEGMENTX

DB

0FFH

;第二个程序换成-5,即0fbhRESULT DB

?DATAXY

ENDS53第4章汇编语言及汇编程序设计2023/11/12广东工业大学自动化学院自动控制系陈玮例题 程序清单—代码段CODE

SEGMENTASSUME

CS:CODE,DS:DATAXYSTART: MOV

AX,DATAXYSUM:;送段地址至DS;累加器BL清0;循环次数送CX;取X的指针;取X送AL;逻辑右移1位;CF=0,转移到NONE;CF=1,BL+1→BLNONE:MOV

DS,AXXOR

BL,BLMOV

CX,08HLEA

SI,XMOV

AL,[SI]SHR

AL,1JNCNONEINC

BLLOOP

SUMMOV

RESULT,BL;统计值送RESULT内存单元

MOV

DL,RESULTADD

DL,

30HMOV

AH,

02H;系统功能调用,显示该统计数值CODEINT

21HMOV

AH,4CHINT

21HENDSEND

START54第4章汇编语言及汇编程序设计2023/11/12广东工业大学自动化学院自动控制系陈玮4、子程序一个程序中,当在不同的地方需要多次使用某段程序时,我们常将这段程序单独编写成一个程序段,称为子程序/过程。子程序的定义格式子程序的调用编写子程序的注意事项55第4章汇编语言及汇编程序设计2023/11/12广东工业大学自动化学院自动控制系陈玮(1)子程序的定义格式格式:子程序名

PROC…RET子程序名ENDP56第4章汇编语言及汇编程序设计2023/11/12广东工业大学自动化学院自动控制系陈玮(2)子程序的调用格式:CALL

子程序名57第4章汇编语言及汇编程序设计2023/11/12广东工业大学自动化学院自动控制系陈玮(3)编写子程序的注意事项1、现场保护:保护调用子程序的现场,即保护子程序中会用到的寄存器,将这些寄存器入栈;2、功能子程序:子程序要完成的功能;3、恢复现场:为了使计算机返回到主程序调用时的状态,将入栈的数据出栈。注意顺序!例题:子程序的基本框架58第4章汇编语言及汇编程序设计2023/11/12广东工业大学自动化学院自动控制系陈玮子程序的基本框架设某一子程序中要用到寄存器BX,CX,SI,DI则:ABC:;子程序的功能程序PUSH

BXPRSH

CXPUSH

SIPUSH

DI……POP

DIPOP

SIPOP

CXPOP

BXRET59第4章汇编语言及汇编程序设计2023/11/12广东工业大学自动化学院自动控制系陈玮例题1编写统计X数据中的“1”的个数子程序,并编写主程序调用。子程序如下:ABC:

PUSH

BXPUSH

CX;累加器BL清0;循环次数送CX;逻辑右移1位;CF=0,转移到NONE;CF=1,BL+1→BL;AL里保存的是“1”的统计个数XOR

BL,BLMOV

CX,08HSUM:SHR

AL,1JNCNONEINC

BLNONE:

LOOP

SUMMOV

AL,

BLPOP

CXPOP

BXRET60第4章汇编语言及汇编程序设计2023/11/12广东工业大学自动化学院自动控制系陈玮例题1

主程序_数据段_堆栈段DATAXY

SEGMENTX

DB

0FFHSX

DB

?DATAXY

ENDS;-STACK

SEGMENTDW

100DUP(?)STACK

ENDS61第4章汇编语言及汇编程序设计2023/11/12广东工业大学自动化学院自动控制系陈玮例题1

主程序_代码段CODE1

SEGMENTASSUME

CS:CODE1,

DS:DATAXY,SS:STACKSTART:;系统功能调用,显示该统计数值MOV

AX,

DATAMOV

DS,

AXLEA

BX,

XMOV

AL,[BX]CALL

ABCMOV

[BX+1],

ALMOV

DL,

SXADD

DL,

30HMOV

AH,

02HINT

21HMOV

AH,4CHINT

21H;

子程序插入此处CODE1

ENDSEND

START62第4章汇编语言及汇编程序设计2023/11/12广东工业大学自动化学院自动控制系陈玮例题2、将一字节无符号二进制数转换为两位十进制数的ASCII码值,并存放在其后的两个字节。(显示程序用子程序编写)。解:编写流程图:63第4章汇编语言及汇编程序设计2023/11/12广东工业大学自动化学院自动控制系陈玮程序——数据段data1

segment;可任取<100的无符号字节数据x

db

2ahy

db

?z

db

?buff db'2ah=$'data1

ends64第4章汇编语言及汇编程序设计2023/11/12广东工业大学自动化学院自动控制系陈玮代码段:code1segmentassume

cs:code1,ds:data1start:

movax,data1movds,axmov

al,xcbwmovbl,0ahdiv

blmovy,almovz,ahleadx,buffmovah,09hint

21h

mov

al,y;下接右上;上接左下call

dispmov

al,zcall

dispjm

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论