




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2023/2/4例3-1:数据块传送程序:将以S1为起始地址的30个字符依次传送到同数据段的以S2为起始地址的一片字节存储单元里。
41H42H…33H
S130个字符S2--…-SIDI方法一:数据块是用DB定义的一个字符串S1。用寄存器间接寻址方式访问S1和S2,即用[SI]表示S1中各字节的位移量,用[DI]表示S2中各字节的位移量。第三章汇编语言程序设计举例2023/2/4程序如下:DATASEGMENTS1DB‘ABCDEFGHIJKLMNOPQRSTUVW’DB‘XYZ0123’S2DB30DUP(?)DATAENDSCODESEGMENTASSUMEDS:DATA,CS:CODESTART:MOVAX,DATAMOVDS,AXMOVSI,OFFSETS1MOVDI,OFFSETS2MOVCX,30NEXT:MOVAL,[SI]MOV[DI],ALINCSIINCDILOOPNEXTMOVAH,4CHINT21HCODEENDSENDSTART2023/2/4DATASEGMENTS1DB‘A’,‘B’,‘C’,‘D’,‘E’DB‘FGHIJKLMNOPQRSTUVWXYZ’DB‘0’,‘1’,‘2’,‘3’S2DB30DUP(?)DATAENDSCODESEGMENTASSUMEDS:DATA,CS:CODESTART:MOVAX,DATA
MOVDS,AX
我们也可以使用其它方法来实现,如用变址寻址方式等。程序如下:MOVSI,0MOVCX,30NEXT:MOVAL,S1[SI]MOVS2[SI],ALINCSILOOPNEXTMOVAH,4CHINT21HCODEENDSENDSTART2023/2/4
DSEGSEGMENTDATADB20DUP(?)DSEGENDSCSEGSEGMENTASSUMECS:CSEG,DS:DSEGGO:MOVAX,DSEGMOVDS,AXMOVCX,20MOVSI,OFFSETDATAL01:MOVAH,01HINT21HMOV[SI],ALINCSILOOPL01例3-2:从键盘上输入20个字符,然后以与键入字符的先后相同的顺序显示出来。MOVCX,20MOVSI,OFFSETDATAL02:MOVDL,[SI]MOVAH,02HINT21HINCSILOOPL02MOVAH,4CHINT21HCSEGENDSENDGO2023/2/4CODESEGMENTASSUMECS:CODESTART:MOVCX,20L1:MOVAH,01HINT21HPUSHAXLOOPL1MOVDL,0AH;显示“回车”MOVAH,02HINT21HMOVDL,0DH;显示“换行”
INT21H例3-3:在键盘上输入20个字符,然后用与输入字符的先后相反的顺序在屏幕上显示出来。MOVCX,20L2:POPDXMOVAH,02HINT21HLOOPL2MOVAH,4CHINT21HCODEENDSENDSTART2023/2/4
一位
十进制(BCD码)的显示: MOVDL,AL ANDDL,0FHADDDL,30HMOVAH,02HINT21H例3-4:数据的显示:2023/2/4例3-4:数据的显示:紧凑结构: MOVDL,AL ANDDL,0FH CMP DL,09 JNA
NEXTADDDL,07NEXT: ADD DL,30H MOVAH,02HINT21H一位
十六进制的显示: MOVDL,ALANDDL,0FH CMP DL,09 JNANEXTADDDL,37H JMPDISPNEXT: ADD DL,30HDISP:MOVAH,02HINT21H2023/2/4CODESEGMENTASSUMECS:CODESTART:MOVDL,BL MOVCL,04SHRDL,CL;高4位移至低4位ADDDL,30HMOVAH,02HINT21H;高4位显示
例3-4:数据的显示:
1、把BL中一个字节的十进制数据(BCD码)显示出来。 MOVDL,BL ANDDL,0FH
ORDL,30H MOVAH,02H INT21H;低4位显示 MOVAH,4CHINT21HCODEENDSENDSTART2023/2/4CODESEGMENT ASSUMECS:CODESTART:MOVDL,BL MOVCL,04 SHRDL,CL;高4位移至低4位 CMP DL,09 JNA
NEXTADDDL,07NEXT: ADD DL,30H MOVAH,02HINT21H;高4位显示
例3-4:数据的显示:
2、把BL中一个字节的十六进制数据显示出来。 MOVDL,BL CMP DL,0AH
JBNEXT2ADDDL,07NEXT2:ADD DL,30H MOVAH,02H INT21H;低4位显示 MOVAH,4CHINT21HCODEENDSENDSTART2023/2/4例:MOVBX,OFFSETTABLE;(BX)=0040HMOVAL,3XLATTABLE
指令执行后(AL)=33H注意:
*不影响标志位*
字节表格(长度不超过256)
首地址
(BX)*
需转换代码(AL)(BX)30HF004031HF0041(AL)=332HF004233HF0043TABLE(DS)=F000H换码指令:XLAT
或XLATOPR执行操作:(AL)((BX)+(AL))2023/2/4例3-5:编写一个加密0~9数字序列的程序,设0,1,2,3,4,5,6,7,8,9对应的密码表为:9,0,8,2,7,4,6,3,1,5,键盘输入0825,显示输出9184。DATASEGMENTSTRDATDB0,8,2,5TABLEDB‘9082746315’DATAENDSCODESEGMENT
ASSUMECS:CODE,DS:DATAGO:MOVAX,DATAMOVDS,AXMOVES,AXLEASI,STRDATLEABX,TABLE MOVCX,4L1: MOVAL,[SI] XLAT
MOVDL,AL MOVAH,02 INT21H LOOPL1 MOVAH,4CH INT21HCODEENDS ENDGO2023/2/4DATASEGMENTBUFFERDB00H,12H,3BH,43H,60H,0CH…COUNTEQU$-OFFSETBUFFER($-BUFFER)MAXDB?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVSI,OFFSETBUFFERMOVCX,COUNTMOVAL,[SI]INCSIDECCX;比较COUNT-1次COMPA:CMPAL,[SI];找大数
JANEXTMOVAL,[SI]NEXT:INCSILOOPCOMPA;比较完否?MOVMAX,AL;保存大数例3-6:对一组字节型无符号数进行比较,把最大数显示在屏幕上。2023/2/4MOVBL,ALMOVDL,ALMOVCL,4SHRDL,CLCMPDL,0AHJBL1ADDDL,7L1:ADDDL,30HMOVAH,02HINT21H;显示高位MOVDL,BL;将大数送至DLANDDL,0FH;截取其低4位CMPDL,0AH
JBL2ADDDL,7L2:ADDDL,30HMOVAH,02HINT21H;显示低位MOVAH,4CHINT21HCODEENDSENDSTART
2023/2/4DATASEGMENTBUFFERDW00H,12H,3BH,0A3H,94H,0CH…COUNTDW$-OFFSETBUFFER;或($-BUFFER)/2RUSLTDB0DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXLEASI,BUFFER MOV BL,0MOVCX,COUNT
SHR CX,1COMPA:MOVAL,[SI];找大数
OR AL,0 JNSNEXTINC BLNEXT:INCSILOOPCOMPA;比较完否?MOVRUSLT,BL;保存大数 ……例3-7:统计一批字型数据中负数的个数,结果放在RUSLT变量中。2023/2/4例3-8:间接转移编写一个程序,根据输入的1-8的数字,转到8个不同的标号处进行各自的处理。即:当输入1时,则转到标号L1处,输出字母A;当输入2时,则转到标号L2处,输出字母B;……当输入8时,则转到标号L8处,输出字母H。假设:数字1-8由键盘上输入。分析:首先将输入的ASCII码转换成对应的数字;然后根据数字,利用段内间接转移指令JMPWORDPTR[BX],转移到对应的标号处执行。2023/2/4DATASEGMENTTABLE1DWL1,L2,L3,L4,L5,L6,L7,L8DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVAH,01HINT21HSUBAL,30HCMPAL,8JAL10 DECALSHLAL,1MOVAH,0MOVSI,AXLEABX,TABLE1JMPWORDPTR[BX][SI]
……….. JMPTABLE1[SI]2023/2/4
…………L1:MOVDL,’A’JMPL9L2:MOVDL,’B’JMPL9L3:MOVDL,’C’JMPL9L4:MOVDL,’D’JMPL9L5:MOVDL,’E’JMPL9L6:MOVDL,’F’JMPL9L7:MOVDL,‘G’JMPL9L8:MOVDL,‘H’JMPL9L9:MOVAH,02HINT21HL10:MOVAH,4CHINT21HCODEENDSENDSTART2023/2/4例3-9:数据块传送程序:将以S1为起始地址的30个字符依次传送到同数据段的以S2为起始地址的一片字节存储单元里。(例3-1)
完成操作后自动修改SI、DI,使其指向串的下一个元素,串操作方向由CLD和STD指令设置:
CLD
地址递增方向(DF=0)
STD
地址递减方向(DF=1)字符串操作指令:MOVSstr1,str2;(格式)将一个字节/字从DS:[SI]ES:[DI]MOVSB;功能MOVSW;功能CMPS、SCAS、LODS、STOS指令前要先将源串首地址DS:[SI]
目标串首地址ES:[DI]2023/2/4需要先将串的长度存入CX寄存器每处理完一个元素自动使CX-1,直到CX=0才
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 郑州医药健康职业学院《产品设计》2023-2024学年第二学期期末试卷
- 四川邮电职业技术学院《供配电安全技术》2023-2024学年第二学期期末试卷
- 天水师范学院《私人财富管理》2023-2024学年第二学期期末试卷
- 武汉商学院《行政管理综合实训》2023-2024学年第二学期期末试卷
- 生物基弹性体建筑材料行业跨境出海项目商业计划书
- 中式烧烤与烤肉自助行业跨境出海项目商业计划书
- 串串香AI应用行业跨境出海项目商业计划书
- 电商快递培训行业跨境出海项目商业计划书
- 蛋品市场潜力评估-洞察阐释
- 健康小鸡快跑课件
- 印刷企业管理制度汇编
- 2026年版广西高等职业教育考试(新职教高考)普高生专用升高职大专《职业适应性测试》模拟试卷(第5套)
- 格力年终总结报告
- 中心城区供热更新改造项目风险分析与管理
- 宁夏新希望贺兰山牧业有限公司良种奶牛繁育基地建设项目环境影响报告书
- 养殖场安全教育培训
- 心源性猝死的预防和急救
- 教师交通安全法规
- 2025-2030年中国蛭石市场发展前景及投资策略分析报告
- 江苏省淮安市(2024年-2025年小学六年级语文)统编版期末考试(下学期)试卷及答案
- 文创产品设计课件
评论
0/150
提交评论