1 / 6
文档名称:

汇编语言00C5H,汇编语言程序基本结构(示例代码).pdf

格式:pdf   大小:320KB   页数:6页
下载后只包含 1 个 PDF 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

汇编语言00C5H,汇编语言程序基本结构(示例代码).pdf

上传人:小屁孩 2022/12/2 文件大小:320 KB

下载得到文件列表

汇编语言00C5H,汇编语言程序基本结构(示例代码).pdf

相关文档

文档介绍

文档介绍:该【汇编语言00C5H,汇编语言程序基本结构(示例代码) 】是由【小屁孩】上传分享,文档一共【6】页,该文档可以免费在线阅读,需要了解更多关于【汇编语言00C5H,汇编语言程序基本结构(示例代码) 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。汇编语⾔00C5H,汇编语⾔程序基本结构(⽰例代码)
⼩编最近学****汇编语⾔,特此记录⼀下。(8086CPU)
注意事项:
*⾸先记录⼀下,al为8位寄存器。当我们命令当中调⽤AL时,CPU会默认为8位寄存器,他和AX是相互独⽴的两个寄存器。即产⽣的仅为
不会存到AH⾥⾯去。
*设定段寄存器的伪指令。汇编时,系统⾃动将代码段的段地址送到CS,到那时如果定义了数据段,附加段,堆栈段,就需要⽤指令将
DS,SS,ES初始化。⼩编就是因为最初没有初始化,造成了结果错误的现象。
DATASEGMENT‘DATA‘XDB93H
ENDS
CODESEGMENT‘CODE‘START:
MOVAX,00C5H
MOVBL,X
ADDAL,BL
ENDS
ENDSTART
上述结果AX中的内容位0058H。最后产⽣的⾼位会进⼊标志位,不会到AH⾥⾯。
顺序结构
顺序结构是最常见的,最基本的数据结构。就是顺次执⾏的。
下⾯为编写计算S=A*B-C,的程序,ABC都为⽆符号字节变量,S为字类型的变量。
DATASEGMENT‘DATA‘ADB38BDB54CDB16SDW?DATAENDS
CODESEGMENT‘CODE‘ASSUMECS:CODE,DS:DATA
START:MOVAX,DATA
MOVAL,A
MOVBL,B
MULBL
MOVBL,C
MOVBH,0SUBAX,BX
MOVS,AX
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
我们在编写⼀个S=86H*34H-21H的程序,式中的三个均为⽆符号数。
涉及到三个数的运算,并且题中没有给定相应的变量,所以只需⼀个定义字节类型的变量来标识存放三个数的地址。
欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!
DATASEGMENT‘DATA‘NUMDB86H,34H,21H
RESULTDW0DATAENDS
CODESEGMENT‘CODE‘ASSUMECS:CODE,DS:DATA
START:
MOVAX,DATA
MOVDS,AX
LEASI,NUM
LEADI,RESULT
MOVAL,[SI]
MOVBL,[SI+1]
MULBL
MOVBL,[SI+2]
MOVBH,0SUBAX,BX
MOV[DI],AX
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
内存⾃TABLE开始的连续16个内存单元存放着0~15的平⽅值,查看表中任意数X的平⽅值,并将结果放在RESULT中。
DESGSEGMENT
TABLEDB0,1,4,9,16,25,36,49,64,81,100,121,144,169,196,225DATADB3RESULTDB0DESGENDS
SSEGSEGMENTSTACK‘STACK‘DB100DUP(0)
SSEGENDS
CSEGSEGMENT
ASSUMECS:SSEG,DS:DESG
BEGIN:MOVAX,DESG
MOVDS,AX
MOVAX,SSEG
MOVSS,AX
LEABX,TABLE
MOVAH,0MOVAL,DATA
ADDBX,AX
MOVAL,[BX]
MOVRESULT,AL
欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!
MOVAH,4CH
INT21H
CSEGENDS
ENDBEGIN
在汇编中XLAT指令的作⽤就是在bx保存array的⾸地址,AL保存array的位置的基础上,执⾏XLAT指令,将返回值送⼊AL指令中.
指令如下指令后AL=5
leabx,array
moval,1
xlat;返回值AL=array[AL]
我们运⽤XLAT指令在处理上⾯的问题就简单多了:
DATASEGMENT‘DATA‘TABLEDB0,1,4,9,16,25,36,49,64,81,100,121,144,169,196,225RESULTDB0XDB11DATA
ENDS
STACKSEGMENT‘STACK‘DW100HDUP(0)
STACKENDS
CODESEGMENT‘CODE‘ASSUMECS:CODE,DS:DATA,SS:STACK
START:MOVAX,DATA
MOVDS,AX
LEABX,TABLE
MOVAL,X
XLAT
MOVCL,AL
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
分⽀程序:
根据不同的条件进⾏不同的跳转。像if-then结构。
下⾯展⽰:在提⽰信息“pleaseinputcharacter:”,后⾯输⼊字符,若输⼊ESC,则结束运⾏;若输⼊的是⼩写字母则显⽰;若⼤写字母
则转换为⼩写显⽰。
DATASEGMENT‘DATA‘MESSAGEDB‘Pleaseinputcharacter:‘,0DH,0AH,‘$‘DATAENDS
STACKSEGMENT‘STACK‘DW100HDUP(0)
STACKENDS
CODESEGMENT‘CODE‘ASSUMECS:CODE,DS:DATA,SS:STACK
START:MOVAX,DATA
MOVDS,AX
欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!
AGAIN:MOVDX,OFFSETMESSAGE
MOVAH,9INT21H
MOVAH,1INT21H
CMPAL,1BH;
JZEXIT
CMPAL,5BH
JCLOW0
CMPAL,7BH
JCLOW1
JMPAGAIN
LOW0:
CMPAL,40H
JCAGAIN
ADDAL,20H
LOW1:
CMPAL,60H
JCAGAIN
MOVAH,2MOVDL,AL
INT21H
MOVDL,0AH
INT21H
JMPAGAIN
EXIT:MOVAH,4CH
INT21H
CODEENDS
ENDSTART
欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!
循环结构:
当程序中碰到多次重复执⾏的程序时i,就可以利⽤循环结构来实现。
在数据段BUFF中开始存放的100个字节类型的⽆符号整数,编写程序找出其中最⼤的数并存放到MAX单元中。
DATASEGMENT‘DATA‘BUFFDB100DUP(0)
MAXDB0DATAENDS
CODESEGMENT‘CODE‘ASSUMECS:CODE,DS:DATA
START:MOVAX,DATA
MOVDS,AX
MOVCX,99LEASI,BUFF
MOVAL,[SI]
INCSI
CON:CMPAL,[SI]
JNCNEXT
MOVAL,[SI]
NEXT:INCSI
LOOPCON
MOVMAX,AL
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
过程设计:
⼦过程(过程)是程序的⼀部分,完成特定功能的程序段。使⽤的时候要注意⼀下三点:
欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!
1参数的传递。需要有传⼊参数和传出参数。参数的传递可以通过寄存器,变量,地址表,堆栈
2相应寄存器的内容保护。
3⼦程序还可以调⽤别的⼦程序,称为⼦程序的嵌套。
类似与⾼级语⾔的函数。但是也有不同的地⽅,⾼级语⾔中的参数都是形参,是临时分配内存单元的,调⽤之后就会注销,将返回值输出。
⽽汇编中相当于参数的直接调⽤,因此需要注意参数的保护,可以将保护的参数进⾏压栈操作。
proc是⼦程序定义伪指令,far是该⼦程序的属性,决定调⽤程序和⼦程序是否在同⼀代码段
如下:为⼦程序定义及说明,
⼦程序名PROCNEAR(或FAR)
xxxxxx具体代码
ret
⼦程序名ENDP
调⽤平⽅和实现20个数的平⽅和:
DATASEGMENT‘DATA‘CONEQU20SUMDW0DATAENDS
CODESEGMENT‘CODE‘ASSUMECS:CODE,DS:DATA
START:MOVAX,DATA
MOVDS,AX
MOVCX,CON
CALLGO
MOVSUM,DX
MOVAX,4C00H
INT21H
GOPROCNEAR
MOVDX,0MOVBL,1MOVAL,BL
CC:MULBL
ADDDX,AX
INCBL
MOVAL,BL
LOOPCC
RET
GOENDP
CODEENDS
ENDSTART
欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!