计算机原理第三章汇编课件.ppt

上传人:石*** 文档编号:47507475 上传时间:2022-10-02 格式:PPT 页数:32 大小:1.63MB
返回 下载 相关 举报
计算机原理第三章汇编课件.ppt_第1页
第1页 / 共32页
计算机原理第三章汇编课件.ppt_第2页
第2页 / 共32页
点击查看更多>>
资源描述

《计算机原理第三章汇编课件.ppt》由会员分享,可在线阅读,更多相关《计算机原理第三章汇编课件.ppt(32页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、计算机原理课件第三章汇编1第1页,此课件共32页哦DOS 下直接执行过程(P172(P172 中段中段)名字 PROC FAR ;远过程 PUSH DS ;压入返回的CS值 ;即保护PSP(程序段前缀Program Segment Prefix)段地址 MOV AX,0 PUSH AX ;再压入0作偏移地址 ;栈顶为返回地址 RET ;远返回,从栈顶 CS:IP名字 ENDP程序结束返回DOS 的IBM 推荐形式2第2页,此课件共32页哦程序模块例程序模块例DATA SEGMENT DATA ENDSSTACK SEGMENT PARA STACK DB 100H DUP(?)STACK EN

2、DSCODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACKEXAM PROC FARSTART:PUSH DS;保护PSP段地址 MOV AX,0 ;保护偏移0地址 PUSHAX RET EXAM ENDPEND STARTDATA SEGMENT DATA ENDSMYSTK SEGMENT PARA STACK DB 100H DUP(?)MYSTK ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA,SS:MYSTKEXAM PROC FARSTART:PUSH DS;保护PSP段地址 MOV

3、AX,0 ;保护偏移0地址 PUSH AX RET EXAM ENDPEND START3第3页,此课件共32页哦3.5程序举例P170【例3.13】数据块传送就是用源数据块去覆盖目标数据块。块1块2应在破坏前先将这部分数据传送走。但当两数据块有部分重叠时,在传送过程中源数据的这部分就可能被破坏。4第4页,此课件共32页哦P170P170图图3.8 3.8 源数据区与目标数据区地址重叠示意图源数据区与目标数据区地址重叠示意图源前先传尾,源后先传头。如何判断源和目标的前后?前后头头尾尾头头尾尾前后5第5页,此课件共32页哦P171 P171 图图3.9 3.9 例例3.133.13流程图流程图分

4、别计算出源数据块和目标数据块的起始地址的20位物理地址并由高16位和低4位组成。然后在区分出两数据块的前后的基础上再进行传送。高高16位相等位相等源在前源在前 源在后源在后6第6页,此课件共32页哦数据块转送程序段(P171)Code segment assume CS:CodeBlkmov proc farStart:push DS mov AX,0 push AX mov AX,SI ;求源(DS:SI)始址高16位 shr AX,1 ;逻辑右移(最高位移进0)shr AX,1 shr AX,1 shr AX,17第7页,此课件共32页哦 mov DX,DS add AX,DX ;得高16

5、位 mov DS,AX ;源(物理)始址高16位送DS and SI,0FH ;得低4位(高12位置0)mov BX,DI ;同样对目标ES:DI shr BX,1 shr BX,1 shr BX,1 shr BX,1 mov DX,ES add BX,DX8第8页,此课件共32页哦 mov ES,BX ;目标(物理)始址高16位送ES and DI,0FH ;得低4位(高12位置0)cmp AX,BX ja Down ;源地址高 jb Up ;源地址低 cmp SI,DI ;还需看低4位 ja Down ;源地址高 jb Up ;源地址低 jmp Exit ;完全相等 Up:std ;指针减

6、量,即从高地址开始往上 9第9页,此课件共32页哦 mov AX,CX ;数据块长度(字节数)dec AX add SI,AX ;得源末址 add DI,AX ;得目标末址 jmp Trans Down:cld ;指针加量,即从低地址开始往下 Trans:rep movsb Exit:ret Blkmov endp Code ends end Start10第10页,此课件共32页哦P172【例3.14】将36位BCD码转换为ASCII十进制数要求:压缩BCD码每字节表示两位十进制数,将高4位和低4位拆开后转换成ASCII码显示。多字节数在存储器中存放的次序是低字节在前、高字节在后。高位开始的

7、0不显示,全0只显示一个0。11第11页,此课件共32页哦P172 P172 图图3.10 3.10 例例3.143.14中中BCDBUFBCDBUF起始的内容起始的内容 显示出字符5 6,即56为此:1)分解成 5和6 2)求出其ASCII码 35H和36H送显示 显示出12345678901234560显示出12345612第12页,此课件共32页哦前导0判断MOVDH,0 ;前导0标志ORDH,;当前一位数字出口:DH0 说明是前导0不显示且标志保持 DH 0,说明是数值显示且标志清除13第13页,此课件共32页哦P173 P173 图图3.11 3.11 例例3.143.14流程图流程

8、图14第14页,此课件共32页哦【例3.14】程序(173页-)Data segmentBcdbuf db 56H,34H,12H,90H,78H,56H,34H,12H db 90H,78H,56H,34H,12H,90H,78H,56H,34H,12HData endsStack segment stack db 100 dup(?)Stack endsCode segment assume CS:Code,DS:Data,SS:StackTrans Proc far15第15页,此课件共32页哦 Start:push DS mov AX,0 push AX mov AX,Data mov

9、 DS,AX mov CX,18 ;装入字节数 lea SI,Bcdbuf add SI,17 ;设置末址(从高地址往低地址)(从高地址往低地址)mov DH,0Load:push CX mov AL,SI ;(从后往前)(从后往前)取一个字节 dec SI mov BL,AL ;暂存入BL16第16页,此课件共32页哦 mov CL,4 rol AL,CL ;经向左循环,把高4位移至低4位 and AL,0fH ;取高4位 or DH,AL ;判断是否为前导0 jz Last ;是,则不显示 add AL,30H ;否则,转换为ASCII码 mov DL,AL ;输出显示 mov AH,02

10、 ;功能号 int 21H ;dos功能调用Last:pop CX ;剩余循环次数 cmp CX,1 ;判断是否为最后字节 jnz Bcdl ;否 mov DH,0fH ;是(且准备处理低4位),则设置标志Bcdl:mov AL,BL ;取回暂存的字节 and AL,0fH ;取低4位17第17页,此课件共32页哦 or DH,AL jz Goon ;前导0,且不为最后字节 add AL,30H ;转换为SCII码 mov DL,AL ;输出显示 mov AH,02 int 21HGoon:loop Load ;如CX-10 则继续 retTrans endpCode ends end Sta

11、rt18第18页,此课件共32页哦程序思考1.若每次从缓冲区中取一个字,效率更高,如何保证显示的顺序正确?2.若是16进制数显示,程序如何修改?19第19页,此课件共32页哦P175【例3.15】多位无符号二进制数的乘法分解成16位乘法的多次循环。此题是2重循环嵌套:一字(16位)乘以被乘数的每一字(内循环)再用乘数的每一字来重复以上过程(外循环)循环嵌套时注意寄存器的保护。此题中的CX。20第20页,此课件共32页哦P176 P176 图图3.14 3.14 例例3.153.15的指针分配的指针分配21第21页,此课件共32页哦P175 图3.15 计算积之和过程示意图每乘一字,则积长一字2

12、2第22页,此课件共32页哦P176 P176 图图3.15 3.15 例例3.153.15流程图流程图和的进位和的进位(循环)处理(循环)处理23第23页,此课件共32页哦【例3.15】程序(177页-)Count equ 3 ;乘数(被乘数)的字数Data segmentMcand dw 00ffH,11ffH,0011HMcator dw 000aH,1000H,0040HProt dw 6 dup(?)Stack segment stack db 100 dup(?)Stack endsCode segment assume CS:Code,DS:Data,ES:Data,SS:Sta

13、ck24第24页,此课件共32页哦 Mbmul proc farStart:push DS mov AX,0 push AX mov AX,Data mov DS,AX mov ES,AX lea SI,Mcand ;置被乘数地址指针 lea BX,Mcator ;置乘数地址指针 lea DI,Prot ;置乘积地址指针 push DI mov AX,025第25页,此课件共32页哦 mov CX,2*Count cld rep stosw ;全部乘积单元清零(见93页)pop DI;上面的stosw改动了DI mov CX,CountExter:push CX ;外循环计数入栈 mov DX

14、,BX ;取一个16位乘数 inc BX inc BX ;指向下一个乘数 push DI ;乘积地址入栈 push SI ;被乘数地址入栈 mov CX,Count26第26页,此课件共32页哦 Inter:push CX ;内循环计数入栈push DX ;一个16位乘数入栈 lodsw ;取一个被乘数放进AX ;且SI+2 mul DX ;(AX)*(DX);乘积在DX:AX(见73页)add DI,AX ;加低位积 inc DI inc DI adc DI,DX ;加高位积 pop DX ;恢复原16位乘数 pop CX ;恢复内循环计数 loop Inter ;循环次数减1 JNC NO

15、CARRY PUSH DIDOCARRY:INC DI INC DI ADC WORD PTR DI,0 JC DOCARRY POP DINOCARRY:pop DX ;恢复原16位乘数=27第27页,此课件共32页哦 pop SI ;恢复被乘数指针 pop DI ;恢复乘积地址指针 inc DI inc DI ;DI+2,每乘一字,则积长一字 pop CX ;恢复外循环计数 loop Exter ;外循环减1 ret Mbmul endp end Start28第28页,此课件共32页哦P181【例3.17】CRT上的电子钟P181 P181 图图3.17 3.17 例例3.173.17流

16、程图流程图P183末行起用到2重循环的软件定时,在主频4.77MHz时执行这段程序大约1秒时间。DELY PROC MOV AX,3 X1:MOV CX,0FFFFH X2:DEC CX JNE X2 DEC AX JNE X1 RET DELY ENDP29第29页,此课件共32页哦1.多处用到显示的BIOS调用 INT 10H2.用到许多宏 CURSOR MACRO ;设置光标位置 WIN MACRO ;设置窗口位置及颜色 ASCBCD MACRO ;ASCII BCD INCBCD MACRO ;BCD数加1 BCDASC MACRO ;BCD ASCII STRDSPY MACRO ;

17、显示字符串30第30页,此课件共32页哦【例3.17】程序(181页-)。Clock proc far;183页中起Start:push DS mov AX,0 push AX mov AX,Data Win 0,0,24,79,7 Win 9,28,15,52,01010111B ;设置窗口 Cursor 11,32 ;设置光标 Strdspy Buf1 ;显示提示 Current time is:Cursor 13,36 ;设置光标Data segmentBuf1 db Curt time is:$Buf2 db 9 db 10 dup(?)Data ends31第31页,此课件共32页哦 lea DX,Buf2 mov AH,0aH int 21H;从键盘接受时间 HH_MM_SS lea BX,Buf2 ;BX+2始存有输入字符串 Ascbcd CH ;小时值 Ascbcd DH ;分值 Ascbcd DL ;秒值 Timer:call Dely ;延时1秒 Incbcd DL,60H ;+1秒,并判定 Incbcd DH,60H ;+1分,并判定 Incbcd CH,24H ;+1小时并判定 Dispy:lea BX,Buf2;小于小于60时则不要做时则不要做;后续判定,直接去显示后续判定,直接去显示32第32页,此课件共32页哦

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁