- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
01段寄存器说明伪指令02指定的段寄存器来寻址对应的逻辑段03ASSUME段寄存器:段名[,段寄存器名:段名,...]04注意:没有为段寄存器设定初值。存储模式和简化段定义伪指令存储模式伪指令.MODEL存储模式.model必须位于所有段定义语句之前存储模式决定一个程序的规模,确定进行子程序调用、指令转移和数据访问的缺省属性MASM的存储模式
①TINY②SMALL③COMPACT④MEDIUM
⑤LARGE⑥HUGE⑦FLAT简化段定义伪指令.STACK[大小] ;堆栈段开始。参数指定字节数,默认是1KB.DATA ;数据段开始.CODE[段名] ;代码段开始一个逻辑段的开始,自动结束前面的一个段段名称使用MASM预定义符号例如:@data表示由.data定义的数据段的段名126543过程调用语句:CALL过程名过程返回语句:RETPROC_NAMEPROC[NEAR]/FAR...RETPROC_NAMEENDP1234565)过程定义伪指令6)源程序结束伪指令END[标号]指示汇编程序结束汇编过程源程序的最后必须为END标号用于指定程序开始执行点,连接程序将据此设置CS:IP值采用.startup不用“end标号”,而使用“end”。4.3基本结构程序设计举例.modelsmall.stack256.dataASCIIdb30h,31h,32h,33h,34h,35hdb36h,37h,38h,39hdb41h,42h,43h,44h,45h,46hHexdb0bh例1:实现一位16进制数转换为ASCII码显示。
(查表法).code.startupmovbx,offsetASCIImoval,hexandal,0fhxlatmovdl,almovah,2int21h.exit0end例2:编写计算下面函数值的程序。X>0Y=0 X=01 XDATASEGMENTX DB-10Y DB?DATAENDSCODESEGMENTASSUMEDS:DATA,CS:CODESTART:MOV AX,DATAMOV DS,AX CMP X,0 JGE A1 MOV Y,-1 JMP EXITA1:JG A2 MOV Y,0 JMP EXITA2:MOV Y,1 EXIT:MOV AH,4CHINT 21HCODEENDSEND START例3:编程统计BUF字单元中1的个数。01DATA SEGMENT02COUNT DB?03DATA ENDS04CODE SEGMENT05ASSUMEDS:DATA,CS:CODE06START: MOV AX,DATA07MOV DS,AX08MOV AX,BUF09MOVCL,0LOPA: AND AX,AX01JZ EXIT 02SHL AX,1 03JNC LOPA04INC CL 05JMP LOPA06EXIT: MOV COUNT,CL07MOV AH,4CH08INT 21H09CODE ENDS10END START11例4:编程实现将BUF字单元的二进制数以十六
进制形式显示在屏幕上。DATASEGMENTBUFDW2468HDATAENDSCODESEGMENTMAINPROCFAR ASSUMECS:CODE,DS:DATA PUSHDS SUBAX,AX PUSHAX MOVAX,DATA MOVDS,AX MOVBX,BUF MOVCH,4RT: MOVCL,4 ROLBX,CL MOVAL,BL ANDAL,0FH ADDAL,30H CMP
文档评论(0)