您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 公司方案 > 10-13下作业第3章(2013926微机)
本次课内容第二章习题课第二章小结(课件8)综合设计题(课件8-下次课提问)大小写转换(课件8-下次课提问)作业讲解第3章总线总线概述内总线–PC/XT总线(8088系统总线)外总线小结作业讲解作业讲解5-作业1.书72页题2.162.书72页题2.183.将DX.BX中32位数值右移四位4.将两无符号数AX、BX的较小值放CX5.编程实现若寄存器DX高4位=0,使AX=0;否则使AX=-1准备下次课提问的题CLDREPMOVSB;重复执行MOVSB指令CX次?40000H改为变量SSSS?查找数据块中‘a’个数放bx、cx(Loop冲突)1.书72页题2.16方法1:循环程序方法2:串操作类指令(内存40000H开始16KB单元数据块传送至首地址A0000H存储区域)5-作业1答案movcx,4000h;设置循环次数16KB=4000H;设置循环初值DS:[SI]指向数据段源缓冲区开始40000H=4000H(DS)×16+0(SI)movax,4000hmovds,axmovsi,0;设置循环初值ES:[DI]指向附加段目的缓冲区开始A0000H=A000H(ES)×16+0(DI)movax,0a000hmoves,axmovdi,0again:moval,[si];循环体:实现数据传送moves:[di],al;每次传送一个字节movsbincsi;SI和DI指向下一个单元incdiloopagain;循环条件判定-循环次数减1,不为0转移(循环)hlt2.书72页题2.18(统计内存40000H开始的16KB单元中为字符’A’个数,结果存放在DX中)movcx,4000H;设置循环次数16KB=4000Hmovsi,0;设置循环初值:SI指向数据段源缓冲区开始物理地址40000H=段基地址(DS)4000H*16+偏移地址(SI)0000Hmovax,4000Hmovds,axmovdx,0;dx存放结果,初值为0next1:cmpbyteptr[si],‘A’;循环体每次比较一个字节‘A’jnznext2incdxnext2:incsi;SI指向下一个单元loopnext1;循环条件判定:循环次数减1,不为0转移(循环)done:hlt5-作业2答案答案:3.将DX.BX中32位数值右移四位MOVCX,4NEXT:SHRDX,1RCRBX,1LOOPNEXTHLT5-作业3答案答案:4.将两无符号数AX、BX的较小值放CXcmpax,bx;比较AX和BXjncnext;若AX≥BX,转移xchgax,bx;若AX<CX,交换next:movcx,bxhlt判断A≥B不低于(大于等于)有符号数JNL/JGE指令无符号数JNC/JNB/JAE指令5-作业4答案答案:5.编程实现若寄存器DX高4位=0,使AX=0;否则使AX=-1testdx,0f000h;测试dx高4位=0jznext;相等,转移movax,-1;不相等,令AX=-1jmpdone;无条件转移指令next:movax,0;相等的处理:令AX=0done:hlt--------------------------------------------------movax,0testdx,0f000hjznext;条件满足(DX高4位全为0),转移movax,-1;条件不满足next:hlt5-作业5答案答案1:答案2:6-作业1.描述DB的功能?伪指令BUFDW1,‘23’,?,4dup(5)执行后,写出BUF开始内存单元的内容2.按照如下要求定义变量(1)s11为11的常量(2)s22为字符串变量OK(3)s33表示字符串OK(4)s44为用十六进制数表示的字节变量44(5)s55为55个未赋值的字变量3.设COUNT变量在数据段的偏移地址为0010H程序如下WNUMEQU01HCOUNTDW20HMOVSI,WNUMADDSI,OFFSETCOUNTMOVAL,[SI]LEABX,COUNTMOVBX,[BX]MOVCX,OFFSETCOUNT问:程序执行后AL=?BX=?CX=?4.将题3写出完整的汇编语言源程序(简化段定义格式)△预习汇编语言程序开发实验(重点掌握CodeView调试方法)△准备下次课提问的题6-作业1.描述DB的功能?伪指令BUFDW1,‘23’,?,4dup(5)执行后,写出BUF开始内存单元的内容[答案:01H,00H,33H,32H,?,?,05H,00H,05H,00H,05H,00H,05H,00H]2.按照如下要求定义变量(1)s11为11的常量[答案:S11EQU11](2)s22为字符串变量OK[答案:S22DB‘OK’](2)s33表示字符串OK[答案:S33EQU‘OK’](3)s44为用十六进制数表示的字节变量44[答案:S44DB44H](4)s55为55个未赋值的字变量[答案:S55DW55DUP(?)]6-作业3讲解AL=?BX=?CX=?AL=00HBX=CX=COUNT变量在数据段的偏移地址存储单元00H20HCOUNT程序如下COUNTDW20HMOVSI,1MOVAL,[SI+COUNT]LEABX,COUNTMOVCX,OFFSETCOUNT设COUNT变量在数据段的偏移地址为0010H程序如下WNUMEQU01HCOUNTDW20HMOVSI,WNUMADDSI,OFFSETCOUNTMOVAL,[SI]LEABX,COUNTMOVBX,[BX]MOVCX,OFFSETCOUNTAL=00HBX=0020HCX=0010H=COUNT变量在数据段的偏移地址.modelsmall.data;定义数据段WNUMEQU01HCOUNTDW20H.code;定义代码段start:movax,@data;程序起始点,建立DSmovds,axMOVSI,WNUMADDSI,OFFSETCOUNTMOVAL,[SI]LEABX,COUNTMOVBX,[BX]MOVCX,OFFSETCOUNT.exit0;程序正常执行结束endstart;汇编结束程序数据定义6-作业4讲解将上题写出完整的汇编语言源程序(简化段定义格式)8-作业1.程序如下countdb65h,'a',?maxintequ1104hnumberdwmaxintarraydbmaxintdup(3)decbyteptrarray-1movbx,offsetnumbermovdh,[bx+2]movdl,[bx-2]movcx,numberhlt问:程序执行后dx=?cx=?2.编程实现将从键盘输入的一个小写字母用大写字母显示出来3.书72页习题12复习第2章内容,预习第3章总线8-作业1讲解dx=0361hcx=1004h存储单元33array11H-104Hnumber?‘a’=61H65Hcount程序如下countdb65h,'a',?maxintequ1104hnumberdwmaxintarraydbmaxintdup(3)decbyteptrarray-1movbx,offsetnumbermovdh,[bx+2]movdl,[bx-2]movcx,numberhlt;方法1程序movah,01h;设置功能调用号int21h;功能调用,AL=字符的ASCII码cmpal,‘a’;是否为小写a~zjcnext;转cmpal,‘z‘janext;转subal,20h;是,转换为大写字母(使D5=0)next:movah,02h;设置功能调用号movdl,al;设置入口参数DL=欲显示字符的ASCII码int21h;功能调用hlt8-作业2讲解编程实现将从键盘输入的一个小写字母用大写字母显示出来01号02号方法1:分支程序方法2:子程序设计字母大小写8-作业2讲解(方法2:子程序设计);主程序movah,01h;设置功能调用号int21h;功能调用,AL=字符的ASCII码calldpchar;调用子程序movah,02h;设置功能调用号movdl,al;设置入口参数DL=欲显示字符的ASCII码int21h;功能调用hlt;子程序小写改大写dpchar:cmpal,‘a';是否为大写A~Zjcnext;转cmpal,‘z'janext;转subal,20h;是,转换为大写字母(使D5=0)next:ret;子程序返回入口参数:寄存器al=需转换字符的ASCII码出口参数:寄存器al=大小写转换后字符的ASCII码子程序开始应保护用到的寄存器,返回前恢复。本题不PUSH/POPAX,因al为出口参数?大写字母用小写字母显示(40000H~4BFFFH写55H,写入读出比较,全对AL置7EH,有错AL置81H)movcx,0C000H;设置循环次数4BFFFH-40000H+1=0C000Hmovsi,0000H;设置循环初值:SI指向数据段源缓冲区开始物理地址40000H=段基地址(DS)4000H*16+偏移地址(SI)0000Hmovax,4000Hmovds,axnext1:movbyteptr[si],55H;循环体每次写入一个字节55hincsi;SI指向下一个单元loopnext1;循环条件判定:循环次数减1,不为0转移(循环)movcx,0C000H;设置循环次数movsi,0000H;SI指向数据段源缓冲区开始moval,81H;设有错next2:movah,[si];循环体每次比较一个字节55hcmpah,55hjnzdoneincsi;SI指向下一个单元loopnext2moval,7EHdone:hlt8-作业3讲解3.书72页习题12答案:作业讲解结束作业讲解结束一.总线概述二.内总线ISA总线•PC/XT总线(8088系统总线)三.外总线第3章总线小结上次课回顾-----与前面所学知识的衔接微型计算机基本结构图:微型计算机的硬件结构◇M/IO*访问存储器或者I/O高电平(M)A19~A0提供20位存储器地址低电平(IO*)A15~A0提供16位I/O口地址◇WR*(Write)写控制低电平有效时,表示处理器正将数据写到存储单元或I/O端口◇RD*(Read)读控制低电平有效时,表示处理器正从存储单元或I/O端口读取数据8086CPU引脚线---外部特性CPU引脚是系统总线的基本信号16位数据线:D0~D1520位地址线:A0~A19控制线:读写控制引脚ALE、M/IO*、WR*、RD*、READYINTR、INTA*、NMI,HOLD、HLDARESET、CLK、Vcc、GND与主存储器、接口有关MOVAL,[2000H]MOV[2000H],AL总线操作M/IO*WR*RD*存储器读(MEMR*)高电平高电平低电平存储器写(MEMW*)高电平低电平高电平I/O读(IOR*)低电平高电平低电平I/O写(IOW*)低电平低电平高电平INAL,80HOUT80H,AL数据和地址引脚形成8位数据D0~D7和20位地址A0~A19AD7~AD0(Address/Data)地址/数据分时复用(即A7~A0/D7~D0)引脚,双向、三态访问内存或外设时,这些引脚在第一个时钟周期输出内存或I/O端口的低8位地址A7~A0其他时间用于传送8位数据D7~D0A15~A8(Address)中间8位地址引脚,输出、三态这些引脚在访问内存或外设时,提供全部20位地址中的中间8位地址A15~A8A19/S6~A16/S3(Address/Status)地址/状态分时复用引脚,输出、三态这些引脚在访问内存的第一个时钟周期输出高4位地址A19~A16在访问外设的第一个时钟周期全部输出低电平无效其他时间输出状态信号S6~S3读写控制信号ALE(AddressLatchEnable)地址锁存允许,三态、输出、高电平有效高有效时,表示复用引脚AD7~AD0和A19/S6~A16/S3正在传送地址信号由于地址信息在这些复用引脚上出现的时间很短暂,所以系统可以利用ALE引脚将地址锁存起来IO/M*(Memory/Inputa
本文标题:10-13下作业第3章(2013926微机)
链接地址:https://www.777doc.com/doc-3055090 .html