好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

微机系统与接口:指令系统应用举例完整版.ppt

22页
  • 卖家[上传人]:第***
  • 文档编号:600659076
  • 上传时间:2025-04-11
  • 文档格式:PPT
  • 文档大小:130.40KB
  • / 22 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,指令系统应用举例,MOV SI,,,OFFSET BUFFER1,;,源数据块首地址的偏移量送,SI,MOV DI,,,OFFSET BUFFER2,;,目标首址的偏移量送,DI,MOV CX,,,200,;,数据块长度送,CX,NEXT,:,MOV AL,,,SI,;,源数据块中一个字节传到,AL,MOV DI,,,AL,;,AL,传送到目标地址,INC SI,;,SI,加,1,INC DI,;,DI,加,1,DEC CX,;,CX,减,1,JNZ NEXT,;,如不等于,0,,转移到,NEXT,书例,2.3 P67,MOV BP,,,SP,;设置基址指针寄存器,PUSH AX,;推入,AX,,,SP,减,2,PUSH BX,;推入,BX,,,SP,减,4,PUSH CX,;推入,CX,,,SP,减,6,MOV 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,;循环次数送,CX,MOV SI,,,0,;,SI,初值为,0,CLC,;清进位标志,CF,LOOPER,:,MOV AL,,,DATA2SI,;取一个字节加数,ADC DATA1SI,,,AL,;,与被加数相同且送回内存区,INC SI,;,SI,加,1,,指向下一字节,DEC CX,;循环次数减,1,JNZ LOOPER,;如不为,0,,转,LOOPER,;如为,0,,运算结束,书例,2.7 P77,计算,4609+3875=,?设被加数和加数的每一位数都以,ASCII,码形式存放在内存中,低位在前,高位在后。

      LEA SI,,,STRING1,;,(SI),被加数地址指针,LEA BX,,,STRING2,;,(BX),加数地址指针,LEA DI,,,SUM,;,(DI),结果地址指针,MOV CX,,,4,;,(CX),循环次数,CLC,;清进位标志,CF,NEXT,:,MOV AL,,,SI,;取一个字节被加数,ADC AL,,,BX,;与加数相加,AAA,;,ASCII,调整(非压缩),MOV DI,,,AL,;送存,INC SI,;,SI,加,1,INC BX,;,BX,加,1,INC DI,;,DI,加,1,DEC CX,;循环次数减,1,JNZ 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,内容不变,但使之影响标志,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,位,无符号数,试比较它们的大小,并将大者传送到,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,个无符号数送,AL,DONE,:,MOVE MAN,,,AL,;较大无符号数送,MAX,单元,;比较结束,书例,2.10 P95,从偏移地址,TABLE,开始的内存区中,存放着,100,个字节的十六进制数,要求将这些数进行累加,并将累加和的低位存,SUM,单元,高位存,SUM+1,单元LEA BX,,,TABLE,;,(BX),数据表地址指针,MOV CL,,,100,;,(CL),数据快长度,XOR AX,,,AX,;清,AL,,,AH,LOOPER,:,ADD AL,,,BX,;加一个数到,AL,JNC GOON,;如,(CF)=0,,转到,GOON,INC AH,;否则,,AH,加,1,GOON,:,INC BX,;地址指针加,1,DEC CL,;计数值减,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*2,MOV BX,,,AX,;暂存,BX,SHL AX,,,1,;,(AX)=FACTOR*4,SHL AX,,,1,;,(AX)=FACTOR*8,ADD AX,,,BX,;,(AX)=FACTOR*10,书例,2.12 P98,将一个,16,位无符号数除以,512,该数原来存放在,DIVIDAND,为首地址的两个连续的存储单元中MOV AX,,,DIVIDAND,;,(AX),被除数,SHR AX,,,1,;,(AX)=DIVIDAND/2,XCHG AL,,,AH,;,(AL),(AH),,相当于循环右移,8,位,CBW,;清,AX,的高,8,位,,;,(AX)=DIVIDAND/512,书例,2.13 P103,将数据段中首地址为,BUFFER1,的,200,个字节传送到附加段首地址为,BURRER2,的内存区中LEA SI,,,BUFFER1,;,(SI),源串首址指针,LEA DI,,,BUFFER2,;,(DI),目标串首址指针,MOV CX,,,200,;,(CX),字节串长度,CLD,;清方向标志,DF,REP MOVSB,;传送,200,个字节,;传送结束,书例,2.14 P104,比较两个字符串。

      找出其中第一个不相当字符串的地址如果两字符串全部相同,则转到,ALLMATCH,进行处理这两个字符串长度均为,20,,首地址分别为,STRING1,和,STRING2,LEA SI,,,STRING1,;,(SI),字符串,1,首地址,LEA DI,,,STRING2,;,(DI),字符串,2,首地址,MOV CX,,,20,;,(CX),字符串长度,CLD,;清方向标志,DF,REPE CMPSB,;如相等,重复进行比较,JCXZ ALLMATCH,;若,(CX)=0,,跳至,ALLMATCH,DEC SI,;否则,(SI)-1,DEC DI,;,(DI)-1,JMP DONE,;跳转至 标号,DONE,ALLMATCH,:,MOV SI,,,0,MOV DI,,,0,DONE,:,;比较结束,书例,2.15 P105,在包含,100,个字符的字符串中寻找第一个回车符,CR(,其,ASCII,码为,ODH),,找到后将其地址保留在,(ES,:,DI),中,并在屏幕上显示字符“,Y”,如果字符串中没有回车符,则在屏幕上显示“,N”,该字符串的首地址为,STRING,LEA DI,,,STRING,;,(DI),字符串首地址,MOV AL,,,0DH,;,(AL),回车符,MOV CX,,,100,;,(CX),字符串长度,CLD,;清标志位,DF,REPNE SCASB,;如未找到,重复扫描,JZ MATCH,;如找到,转,MATCH,MOV DL,,,N,;字符串中无回车符,则,(DL),N,JMP DSPY,;转到,DSPY,MATCH,:,DEC DI,;,(DI)-1,MOV DL,,,Y,;,(DI),Y,DSPY,:,MOV AH,,,02,;显示字符,INT 21H,;搜索结束,书例,2.16 P106,内存中以,BUFFER,为首地址的缓冲区内有,10,个以不压缩,BCD,码形式存放的十进制数,它们的值可能是,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,个字符则重复,书例,2.17 P107,将字符“,#”,装入以,AREA,为首址的,100,个字节中LEA DI,,,AREA,MOV AX,,,#,MOV CX,,,50,CLD,REP STOSW,书例,2.18 P107,一个数据块由大写或小写的英文字母、数字和其他各种符号,组成,其结束符是回车符,CR(,其,ASCII,码为,ODH),,数据块,的首地址为,BLOCK1,要求将数据块传送到,BLOCK2,为首地,址的内存区,并将其中所有英文小写字母,(a-z),转换成相应的,大写字母,(A-Z),,其余不变LEA SI,,,BLOCK1,;,(SI),源地址指针,LEA DI,,,BLOCK2,;,(DI),目标地址指针,CLD,;清方向标志,DF,NEXT,:,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 ;,否则,,AL,减,20H,OK,:,STOSB,;送存,JMP NEXT,;转移到,NEXT,DONE,:,例,2.19 P113,在内存的数据段中存放了若干个,8,位带符号数,其数据块的,长度为,COUNT,(不超过,255,),首地址为,TABLE,,试统计,其中正元素、负元素、零元素的个数,并分别将个数存入,PLUS,、,MINUS,、,ZERO,单元。

      XOR AL,,,AL,;,(AL),0,MOV PLUS,,,AL ;,清,PLUS,单元,MOV MINUS,,,AL,;清,MINUS,单元,MOV ZERO,,,AL,;清,ZERO,单元,LEA SI,,,TABLE,;,(SI),数据块首地址,MOV CX,,,COUNT,;,(CX),数据块长度,CLD,;清标志位,DF,CHECK,:,LODSB,;取一个数到,AL,OR AL,,,AL,;使数据影响标志位,JS X1,;如为负,转,X1,JZ X2,;如为零,转,X2,INC PLUS,;否则为正,,PLUS,单元加,1,JMP NEXT,X1,:,INC MINUS,;,MINUS,单元加,1,JMP NEXT,X2,:,INC ZERO,;,ZERO,单元加,1,NEXT,:,LOOP CHECK,;,CX,减,1,,如不为,0,,则转,CHECK,例,2.20 P113,在以,DATA,为首地址的内存数据段中,存放了,100,个,16,。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.