微机系统与接口:第三讲(3)指令系统应用举例

上传人:努力****83 文档编号:239827283 上传时间:2024-02-22 格式:PPT 页数:23 大小:419KB
收藏 版权申诉 举报 下载
微机系统与接口:第三讲(3)指令系统应用举例_第1页
第1页 / 共23页
微机系统与接口:第三讲(3)指令系统应用举例_第2页
第2页 / 共23页
微机系统与接口:第三讲(3)指令系统应用举例_第3页
第3页 / 共23页
资源描述:

《微机系统与接口:第三讲(3)指令系统应用举例》由会员分享,可在线阅读,更多相关《微机系统与接口:第三讲(3)指令系统应用举例(23页珍藏版)》请在装配图网上搜索。

1、 指令系统应用举例指令系统应用举例 书例书例 2.2 P63MOV SI,OFFSET BUFFER1;源数据块首地址的偏移量送源数据块首地址的偏移量送SIMOV DI,OFFSET BUFFER2 ;目标首址的偏移量送目标首址的偏移量送DIMOV CX,200 ;数据块长度送数据块长度送CXNEXT:MOV AL,SI ;源数据块中一个字节传到源数据块中一个字节传到ALMOV DI,AL ;AL 传送到目标地址传送到目标地址INC SI ;SI 加加1INC DI ;DI加加1DEC CX ;CX减减1JNZ NEXT ;如不等于如不等于0,转移到,转移到NEXT 书例书例 2.3 P67M

2、OV BP,SP ;设置基址指针寄存器;设置基址指针寄存器PUSH AX ;推入;推入AX,SP减减2PUSH BX ;推入;推入BX,SP减减4PUSH CX ;推入;推入CX,SP减减6MOV AX,BP-2 ;恢复;恢复AX原来的内容原来的内容MOV BX,BP-4 ;恢复;恢复BX原来的内容原来的内容MOV CX,BP-6 ;恢复;恢复CX原来的内容原来的内容ADD SP,6 ;恢复;恢复SP原来的内容原来的内容 书例书例2.6 P75要求计算两个多字节十六进制数之和:要求计算两个多字节十六进制数之和:3B74AC60F8H+20D59E36C1H=?MOV CX,5 ;循环次数送;循

3、环次数送CX MOV SI,0 ;SI初值为初值为0 CLC ;清进位标志;清进位标志CFLOOPER:MOV AL,DATA2SI ;取一个字节加数;取一个字节加数 ADC DATA1SI,AL ;与被加数相同且送回内存区与被加数相同且送回内存区 INC SI ;SI加加1,指向下一字节,指向下一字节 DEC CX ;循环次数减;循环次数减1 JNZ LOOPER ;如不为;如不为0,转,转LOOPER ;如为;如为0,运算结束,运算结束 书例书例2.7 P77计算计算4609+3875=?设被加数和加数的每一位数都以设被加数和加数的每一位数都以ASCII码码形式存放在内存中,低位在前,高位

4、在后。形式存放在内存中,低位在前,高位在后。LEA SI,STRING1 ;(SI)被加数地址指针被加数地址指针 LEA BX,STRING2 ;(BX)加数地址指针加数地址指针 LEA DI,SUM ;(DI)结果地址指针结果地址指针 MOV CX,4 ;(CX)循环次数循环次数 CLC ;清进位标志;清进位标志CFNEXT:MOV AL,SI ;取一个字节被加数;取一个字节被加数 ADC AL,BX ;与加数相加;与加数相加 AAA ;ASCII调整(非压缩)调整(非压缩)MOV DI,AL ;送存;送存 INC SI ;SI加加1INC BX ;BX加加1INC DI ;DI加加1DEC

5、 CX ;循环次数减;循环次数减1JNZ NEXT ;如不为;如不为0,转,转NEXT ;如为;如为0,结束运算,结束运算 书例书例2.8 P81内存数据段存放了内存数据段存放了100个带符号数,首地址为个带符号数,首地址为AREA1,要求,要求将各数取绝对值后存入以将各数取绝对值后存入以AREA2为首址的内存区。为首址的内存区。LEA SI,AREA1 ;(SI)源地址指针源地址指针 LEA DI,AREA2 ;(DI)目标地址指针目标地址指针 MOV CX,100 ;(CX)循环次数循环次数CHECK:MOV AL,SI ;取一个带符号数到;取一个带符号数到AL OR AL,AL ;AL内

6、容不变,但使之影响标志内容不变,但使之影响标志 JNS NEXT ;若;若(SF)=0,则转,则转NEXT NEG AL ;否则求补;否则求补NEXT:MOV DI,AL ;传送到目标地址;传送到目标地址 INC SI ;源地址加;源地址加1 INC DI ;目标地址加;目标地址加1 DEC CX ;循环次数减;循环次数减1 JNZ CHECK ;如不等于;如不等于0,则转,则转CHECK ;如等于;如等于0,转换结束,转换结束 书例书例2.9 P82在内存数据段从在内存数据段从DATA开始的存储单元中分别存放了开始的存储单元中分别存放了2个个8位位无符号数,试比较它们的大小,并将大者传送到无

7、符号数,试比较它们的大小,并将大者传送到MAX单单元。元。LEA BX,DATA ;DATA偏移地址偏移地址BX MOV AL,BX ;第一个无符号数送;第一个无符号数送AL INC BX ;BX指向第二个无符号数指向第二个无符号数 CMP AL,BX ;两个数比较;两个数比较 JNC DONE ;如(;如(CF)=0,则转,则转DONE MOV AL,BX ;否则,第;否则,第2个无符号数送个无符号数送ALDONE:MOVE MAN,AL ;较大无符号数送;较大无符号数送MAX单元单元 ;比较结束;比较结束 书例书例2.10 P95 从偏移地址从偏移地址TABLE开始的内存区中,存放着开始的

8、内存区中,存放着100个字节的十六进制数,要求将这些数个字节的十六进制数,要求将这些数进行累加,并将累加和的低位存进行累加,并将累加和的低位存SUM单元,高位存单元,高位存SUM+1单元。单元。LEA BX,TABLE ;(BX)数据表地址指针数据表地址指针 MOV CL,100 ;(CL)数据快长度数据快长度 XOR AX,AX ;清;清AL,AHLOOPER:ADD AL,BX ;加一个数到;加一个数到AL JNC GOON ;如;如(CF)=0,转到,转到GOON INC AH ;否则,;否则,AH加加1 GOON:INC BX ;地址指针加;地址指针加1 DEC CL ;计数值减;计数

9、值减1 JNZ LOOPER ;如如(CL)不为不为0,转移到,转移到LOOPER MOV SUM,AX ;否则,否则,(SUN)AL,UM+1)(AH);累加结束累加结束 书例书例2.11 P97将一个将一个16位无符号数乘以位无符号数乘以10。该数原来存放在以。该数原来存放在以FACTOR为为首地址的两个连续的存储单元中(低位在前,高位在后)。首地址的两个连续的存储单元中(低位在前,高位在后)。MOV AX,FACTOR ;(AX)被乘数被乘数SHL AX,1 ;(AX)=FACTOR*2MOV BX,AX ;暂存;暂存BXSHL AX,1 ;(AX)=FACTOR*4 SHL AX,1

10、;(AX)=FACTOR*8ADD AX,BX ;(AX)=FACTOR*10 书例书例2.12 P98 将一个将一个16位无符号数除以位无符号数除以512。该数原来存放在。该数原来存放在DIVIDAND为为首地址的两个连续的存储单元中。首地址的两个连续的存储单元中。MOV AX,DIVIDAND ;(AX)被除数被除数SHR AX,1 ;(AX)=DIVIDAND/2XCHG AL,AH ;(AL)(AH),相当于循环右移,相当于循环右移8位位CBW ;清;清AX的高的高8位,位,;(AX)=DIVIDAND/512 书例书例2.13 P103将数据段中首地址为将数据段中首地址为BUFFER

11、1的的200个字节传送到个字节传送到附加段首地址为附加段首地址为BURRER2的内存区中。的内存区中。LEA SI,BUFFER1 ;(SI)源串首址指针源串首址指针LEA DI,BUFFER2 ;(DI)目标串首址指针目标串首址指针MOV CX,200 ;(CX)字节串长度字节串长度CLD ;清方向标志;清方向标志DFREP MOVSB ;传送;传送200个字节个字节 ;传送结束;传送结束 书例书例2.14 P104 比较两个字符串。找出其中第一个不相当字符串的地址。如果两字符串全部相同,比较两个字符串。找出其中第一个不相当字符串的地址。如果两字符串全部相同,则转到则转到ALLMATCH进行

12、处理。这两个字符串长度均为进行处理。这两个字符串长度均为20,首地址分别为,首地址分别为STRING1和和STRING2LEA SI,STRING1 ;(SI)字符串字符串1首地址首地址LEA DI,STRING2 ;(DI)字符串字符串2首地址首地址MOV CX,20 ;(CX)字符串长度字符串长度CLD ;清方向标志;清方向标志DFREPE CMPSB ;如相等,重复进行比较;如相等,重复进行比较JCXZ ALLMATCH ;若若(CX)=0,跳至,跳至ALLMATCHDEC SI ;否则;否则(SI)-1DEC DI ;(DI)-1JMP DONE ;跳转至;跳转至 标号标号DONEAL

13、LMATCH:MOV SI,0 MOV DI,0DONE:;比较结束;比较结束 书例书例2.15 P105 在包含在包含100个字符的字符串中寻找第一个回车符个字符的字符串中寻找第一个回车符CR(其其ASCII码为码为ODH),找到后将其地址保留在,找到后将其地址保留在(ES:DI)中,并在屏幕上显示字符中,并在屏幕上显示字符“Y”。如果字符串中没有回车符,则在屏幕上显示。如果字符串中没有回车符,则在屏幕上显示“N”。该字符串。该字符串的首地址为的首地址为STRING。LEA DI,STRING ;(DI)字符串首地址字符串首地址MOV AL,0DH ;(AL)回车符回车符MOV CX,100

14、 ;(CX)字符串长度字符串长度CLD ;清标志位;清标志位DFREPNE SCASB ;如未找到,重复扫描;如未找到,重复扫描JZ MATCH ;如找到,转;如找到,转MATCHMOV DL,N ;字符串中无回车符,则;字符串中无回车符,则(DL)NJMP DSPY ;转到;转到DSPYMATCH:DEC DI ;(DI)-1 MOV DL,Y ;(DI)YDSPY:MOV AH,02 ;显示字符;显示字符 INT 21H ;搜索结束;搜索结束 书例书例2.16 P106 内存中以内存中以BUFFER为首地址的缓冲区内有为首地址的缓冲区内有10个以不压缩个以不压缩BCD码码形式存放的十进制数

15、,它们的值可能是形式存放的十进制数,它们的值可能是0-9中的任意一个,将这中的任意一个,将这些十进制数顺序显示在屏幕上。些十进制数顺序显示在屏幕上。LEA SI,BUFFER ;(SI)缓冲区首地址缓冲区首地址 MOV CX,10 ;(CX)字符串长度字符串长度 CLD ;清标志位;清标志位DF MOV AH,02 ;(AH)功能号功能号GET:LODSB ;取一个;取一个BCD码到码到AL ADD AL,30H ;BCD码转换为码转换为ASCII码码 MOV DL,AL ;(DL)字符字符 INT 21H ;显示;显示 DEC CX ;(CX)-1 JNZ GET ;未完成;未完成10个字符

16、则重复个字符则重复 书例书例2.17 P107将字符将字符“#”装入以装入以AREA为首址的为首址的100个字节中。个字节中。LEA DI,AREAMOV AX,#MOV CX,50CLDREP STOSW 书例书例2.18 P107一个数据块由大写或小写的英文字母、数字和其他各种符号一个数据块由大写或小写的英文字母、数字和其他各种符号组成,其结束符是回车符组成,其结束符是回车符CR(其其ASCII码为码为ODH),数据块,数据块的首地址为的首地址为BLOCK1。要求将数据块传送到。要求将数据块传送到BLOCK2为首地为首地址的内存区,并将其中所有英文小写字母址的内存区,并将其中所有英文小写字

17、母(a-z)转换成相应的转换成相应的大写字母大写字母(A-Z),其余不变。,其余不变。LEA SI,BLOCK1 ;(SI)源地址指针源地址指针 LEA DI,BLOCK2 ;(DI)目标地址指针目标地址指针 CLD ;清方向标志;清方向标志DFNEXT:LODSB ;取一个字符到;取一个字符到AL CMP AL,0DH ;是否是回车符;是否是回车符 JZ DONE ;是,转;是,转DONE CMP AL,61H ;否则,是否小于;否则,是否小于a JC OK ;是,则转是,则转OK CMP AL,7BH ;是否大于;是否大于z JNC OK ;是,则转是,则转OK SUB AL,20H ;否

18、则,否则,AL减减20HOK:STOSB ;送存;送存 JMP NEXT ;转移到;转移到NEXTDONE:例例2.19 P113在内存的数据段中存放了若干个在内存的数据段中存放了若干个8位带符号数,其数据块的位带符号数,其数据块的长度为长度为COUNT(不超过(不超过255),首地址为),首地址为TABLE,试统计,试统计其中正元素、负元素、零元素的个数,并分别将个数存入其中正元素、负元素、零元素的个数,并分别将个数存入PLUS、MINUS、ZERO单元。单元。XOR AL,AL ;(AL)0MOV PLUS,AL ;清清PLUS单元单元MOV MINUS,AL ;清;清MINUS单元单元M

19、OV ZERO,AL ;清;清ZERO单元单元LEA SI,TABLE ;(SI)数据块首地址数据块首地址MOV CX,COUNT ;(CX)数据块长度数据块长度CLD ;清标志位;清标志位DFCHECK:LODSB ;取一个数到;取一个数到AL OR AL,AL ;使数据影响标志位;使数据影响标志位 JS X1 ;如为负,转;如为负,转X1 JZ X2 ;如为零,转;如为零,转X2 INC PLUS ;否则为正,;否则为正,PLUS单元加单元加1 JMP NEXTX1:INC MINUS ;MINUS单元加单元加1 JMP NEXTX2:INC ZERO ;ZERO单元加单元加1NEXT:L

20、OOP CHECK ;CX减减1,如不为,如不为0,则转,则转 CHECK 例例2.20 P113在以在以DATA为首地址的内存数据段中,存放了为首地址的内存数据段中,存放了100个个16位带位带符号数,试将其中最大和最小的带符号数找出来,分别存放符号数,试将其中最大和最小的带符号数找出来,分别存放到以到以MAX和和MIN为首地址的内存单元中。为首地址的内存单元中。LEA SI,DATA ;(SI)数据块首地址数据块首地址 MOV CX,100 ;(CX)数据块长度数据块长度 CLD ;清方向标志;清方向标志DF LODSW ;送一个;送一个16位带符号数到位带符号数到AX MOV MAX,A

21、X ;送;送MAX单元单元 MOV MIN,AX ;送;送MIN单元单元 DEC CX ;(CX)-1NEXT:LODSW ;取下一个;取下一个16位带符号数位带符号数 CMP AX,MAX ;与;与MAX单元内容比较单元内容比较 JG GREATER ;大于;大于MAX,则转,则转GREATER CMP AX,MIN ;否则,与;否则,与MIN单元比较单元比较 JL LESS ;小于;小于MIN,转,转LESS JMP GOON ;否则,转;否则,转GOONGREATER:MOV MAX,AX ;(MAX)(AX)JMP GOON ;转;转GOONLESS:MOV MIN,AX ;(MIN)(AX)GOON:LOOP NEXT ;CX减减1,不等于,不等于0转转NEXT 作业:作业:

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!