版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第第38页第一章解:五代,详细见书解:微型计算机:以大规模、超大规模集成电路为主要部件,以集造出的计算机系统。PC机:PC(PersonalComputer)机就是面向个人单独使用的一类微机。CPURAM串行接口,有的芯片还集成了A/DD/A数字信号处理器DSP:主要面向大流量数字信号的实时处理,正得到越来越多的应用解:微机主要有存储器、I/O设备与I/O接口、CPU、系统总线、操作系统与应用软件组成,各部分功能如下:CPU:统一协调与控制系统中的各个部件系统总线:传送信息存储器:存放程序与数据I/O设备:实现微机的输入输出功能I/O接口:I/O设备与CPU的桥梁操作系统:管理系统所有的软硬件资源解:与I/O设备进行信息交换。好处:组态灵活、扩展方便三组信号线:数据总线、地址总线与控制总线。其使用特点是:在某一时刻,只能由一个总线主控设备来控制系统总线,只能有一个发送者向总线发送信号;但可以有多个设备从总线上同时获得信号。解:用于过程控制与嵌人应用方向。采用控制类微机,要求能抵抗各种干扰、适应现场的恶劣环境、确保长时间稳定地工作,要求其实时性要好、强调其体积要小、便携式应用强调其省电。解:解:I/OCPUCPUI/OCPUI/O任务中解10(A9-A0)。解:BIOS:基本输入输出系统。主要功能:用来驱动与管理诸如键盘、显示器、打印机、磁盘、时钟、串行通信接口等基本的输入输出设备解:基本RAM640KB保留RAM128KB扩展ROM基本ROM解:、数—用来直接表征量的大小,包括:定点数、浮点数。二进制、八进制、十进制、十六进制。区别:使用场合不同,详见P16.解:(1)(2)(3)解:原码 反码 补码+37 00100101/25H 00100101/25H-37 10100101/A5H 11011011/DBH解:+37-3716位32位16位32位0025H00 0025H00FF5BHFF FF FF5BH解:无符号数:70D补码有符号数:70DBCD码:46DASCII:F解:91016解:详见课本16页。解:十进制值
C34020005050
50H80
二进制00110010B
十六进制32HD:44Hd:64HCR:0DHLF:0AH0:30HSP:20HNUL:00H
二进制01010000B
十六进制50H
国标码:3650H机内码:B6B0H第3章完整的汇编语言源程序由段组成加段或堆栈段,段与段之间的顺序可随意排列的起始点,一个程序只有一个起始点句可根据需要位于任一段内通常,程序还需要一个堆栈段解:存储模式TINY
特点COM64KB(MASM6.xSMALL 小应用程序,只有一个代码段与一个数据段(含堆栈段),每段COMPACTMEDIUM
代码少、数据多的程序,只有一个代码段,但有多个数据段代码多、数据少的程序,可有多个代码段,只有一个数据段LARGE 大应用程序,可有多个代码段与多个数据段(64KHUGEFLAT
更大应用程序,可有多个代码段与多个数据段(对静态数据没有32位应用程序,运行在32位80x86CPU与Windows9x或N开始位置:用标号指明返回DOS:利用DOS4CH汇编停止:执行到一条END解:段定位、段组合与段类型。解:stack segment stackdb stack endsdata segmentstring db data endscode segment 'code'assume start: mov dx,offsetstringmov int 21hcode endsend start解:EXE通常生成EXECOM只有一个逻辑段,程序长度不超过64KB需要满足一定条件才能生成COM结构的可执行程序(MASM6.x需要采用TINY模式)解:符号定义伪指令有“等价EQU”与“等号=”:符号名EQU数值表达式符号名EQU<字符串>符号名=数值表达式EQU用于数值等价时不能重复定义符号名,但“=”允许有重复赋值。例如:X=7 ;等效于:Xequ7X=X+5 ;“XEQUX+5”是错误的解:(1)al=67h(2)ax=133h,dx=4h(3)ax=0230h(4)al=41h(4)ax=7654h解:(1)444114546-?444-?444-?4441h2h3h0hhh111(2)10h00 h h0ffh? ?? ???3.11.datamy1bdb'PersonalComputer'my2bmy3bdbdb2014hmy4bdb00010100bmy5wdw20dup(?)my6c=100my7c=<'Personal Computer'>解:利用定位伪指令控制,如org,even,align解:包括逻辑地址与类型两种属性。解:;数据段org 100hvarwdw1234h , 5678hvarb db3 , 4vard dd12345678hbuff dd10dup(?)messdb'Hello';代码段mov ax, offsetvarb + offsetmessmov ax, type buff + type mess+ type mov ax, sizeofvarw+sizeofbuff+sizeofmessmov ax, lengthofvarw+lengthofvard解:1000SI两个内存单元不能直接运算[al+1]条件转移指令后面应接标号,而不是变量解:movah,1 int21hsubal,20h movdl,almovah,2int21h ;显示解:movbx,offsetLEDtablemoval,lednumxlat解:movax,cmpax,bufYjaedonemovax,done: movbufZ,ax解:.modelsmall.stack.databufX dw-7signX db?.code.startupcmpbufX,0;testbufX,80hjlnext ;jnznextmovsignX,0jmpdonenext: movsignX,-1done: .exitend解:movdl,’2’movax,bufXcmpax,bufYjenext1decdlnext1:cmpjenext2decdlnext2:movint21h解:;代码段moval,numbermovbx,0 ;BX1restart:again:next:元)fun0:fun1:fun2:fun3:fun4:fun5:fun6:
cmpal,0 ;AL=0jzdoneshral,1 ;最低位右移进入jcnext ;为1,转移incbx 1jmpagainpushaxpushbxshlbx,1 ;位数乘以2(偏移地址要用2个字节单jmpaddrs[bx];间接转移:IP←[table+BX]movdl,'0'jmpdispmovjmpdispmovjmpdispmovjmpdispmovjmpdispmovjmpdispmovjmpdispfun7:movdl,'7'jmpdispdisp:movah,2;显示一个字符int21hpopbxpopaxjmprestartdone:…12H45H、0F3H、6AH20H0FEH90H0C8H57H与34H等10个字节数据之与,并将结果存入字节变量SUM(不考虑溢出与进位。;wjxt322.asm.model small.stack.datab_data db12h,45h,0f3h,6ah,20h,0feh,90h,0c8h,57h,34h 原始数num equ 10 ;数据个数sum db ? ;预留结果单元.code.startupxorsi,si;位移量清零xoral,al;取第一个数movcx,num;累加次数again:addal,b_data[si];累加incsi ;指向下一个数loopagain ;如未完,继续累movsum,al;完了,存结果.exit0end0040h:064KB空格?;wjxt323.asm.modelsmall.codestart: movax,0040h movds,axmovsi,0 ;偏移地址movcx,si ;计数(循环次数xorax,ax ;空格计数器清零again: cmpbyteptr[si],20h ;与空格的ASCII码比jnenext ;不是空格,转incax ;是空格,空格数加next: incsi ;修改地址指针loopagain ;cx=cx-1,如cx=0退出循环.exit0end编写计算100个16位正整数之与的程序。如果与不超过16位字的范围6553,则保存其与到wordsum,示‘overflo答:;数据段count equ100parray dwcountdup(?);假设有100wordsumdw0msg db‘overflow’,’$’;代码段movcx,countmovax,0movbx,offsetagain: addax,[bx]jncnextmovdx,offsetmsgmovah,9int21h ;显示溢出信息jmpdone ;然后,跳出循环next: addbx,2loopmovwordsum,axdone: …编程把—个168421BCD5100以l00、10与l;wjxt325.asm.modelsmall.stack256.dataarray dw? ;源字数据dbcd db5dup(?);五位bcd.code.startupmovdx,array;取源数据(余数movbx,10000 ;除数movcx,10;除数系数movsi,4 ;目的数据高位位移量again: movax,dx;dx.axmovdx,0divbx ;除于bx,商ax,余数movdbcd[si],al;商<10,存结果pushdx ;暂存余数movax,bx;除数除于10movdx,0divcx 除于ax0存在movbx,ax;bxpopdxdecsi jnzagainmovdbcd,dl;存个位数(<10).exit0end解:PROC与声明,格式如下:过程名 PROC[NEAR|FAR]…… ;过程体过程名 ENDPcrazyprocpish bxpushcxxor xor dx,dxagain:add a,[bx]adc incbxincbxloop pop cxpop bx解(不需调用HTOASC子程序again: movah,1int21hcmpal,1bh;ESC的ASCIIjedonemovdl,almovint21h jmpagaindone: …解答:asctob pushcxanddh,0fh;先转换十位数shldh,1 10(采用移位指令movch,dhshldh,1shldh,1adddh,chanddl,0fh ;转换个位数adddh,dl ;十位数加个位moval,dh ;设置出口参数popcxretasctob endp3.29解:DIPASCproc16数pushcxpushdxpushaxmovcl,4;转换高位shral,clcallHTOASCmovdl,al movah,2int21hpopax callHTOASCmovdl,al movah,2int21hmovdl,’H’;显示一个字母“H”movah,2int21hpopdxpopcxretDIPASC endpHTOASCproc ;将AL416为ASCIIandal,0fhcmpal,9jbehtoasc1addal,37h ;是0AH~0FH,加37H转换为ASCII码ret ;子程序返回htoasc1:addal,30h;是0~930HASCIIret HTOASCendp解:lucasepushbxmovbx,offsetstringcmpal,0jecase0cmpal,1jzcase1cmpal,2jzcase2jmpdonecase0:cmpbyteptr[bx],0jedonecmpbyteptrjbnext0cmpbyteptrjanext0addbyteptr[bx],20hnext0: incbxjmpcase0case1: cmpbyteptr[bx],0jedonecmpbyteptrjbnext1cmpbyteptrjanext1subbyteptr[bx],20hnext1: incbxjmpcase1case2: cmpbyteptr[bx],0jedonecmpbyteptr[bx],’A’jbnext2cmpbyteptr[bx],’Z’janext20addbyteptr[bx],20hjmpnext2next20:cmpbyteptrjbnext2cmpbyteptrjanext2subbyteptr[bx],20hnext2: incbxjmpdone: popbxretlucase 解:用寄存器传递参数:定的寄存器中就可以了值,而对大量数据只能传递地址复,带有入口参数的寄存器可以保护、也可以不保护,但最好能够保持一致用共享变量传递参数子程序与主程序使用同一个变量名存取数据就是利用共享变量(全局变量)进行参数传递如果变量定义与使用不在同一个源程序中,需要利用PUBLIC、EXTREN声明如果主程序还要利用原来的变量值,则需要保护与恢复个程序段间、尤其在不同的程序模块间传递数据用堆栈传递参数入堆栈,子程序从堆栈中取出参数;子程序将出口参数压入堆栈,主程序弹出堆栈取得它们与汇编语言与高级语言混合编程时的常规方法解:方法:主程序将入口参数压入堆栈,子程序从堆栈中取出参数;子程序将出口参数压入堆栈,主程序弹出堆栈取得它们注意:压栈与弹栈必须要一一对应。1:neg32 proc ;入口参数:DX.AX=32位有符号negax ;实现0-DX.AX功能negdxsbbdx,0;这条指令也可以用decdx代替retneg32endp;出口参数:DX.AX=32位有符号数的补码方法2:neg32proc;入口参数:DX.AX=32位有符号数notax;实现DX.AX求反加1notdxaddax,1adcdx,0retneg32endp;出口参数:DX.AX=32位有符号数的补码解:array db12h,25h,0f0h,0a3h,3,68h,71h,0cah,0ffh,90h;数组count equ$-array;数组元素个result db? ;校验与;代码段movbx,offsetarray;BXmovcx,count;CX←数组的元素个数callchecksum movresult,al;处理出口参数movax,4c00hint21h;计算字节校验与的通用过程;入口参数:DS:BX=数组的段地址:偏移地址,CX=元素个数
;出口参数:AL=校验与;说明:除AX/BX/CX外,不影响其他寄存器checksumprocxoral,al ;累加器清sum: addal,[bx] ;求与incbx loopsumretchecksumendpend解:.modelsmall.stack.datawdata dw34abh.code.startupmovax,wdatacalldispa.exit0dispa procpushcxpushdxmovcl,4movshrdl,clcalldldispmovdl,ahanddl,0fhcalldldispmovdl,alshrdl,clcalldldispmovdl,alanddl,0fhcalldldisppopdxpopcxretdispa endpdldisp procpushaxorcmpjbedldisp1adddl,7dldisp1:movah,2int21hpopaxretdldispendpend.modelsmall.stack.datawdata dwwordtempdw?dispadispadldisp
.code.startupmovax,wdatamovwordtemp,axcalldispa.exit0procpushcxpushdxmovmovdl,byteptrwordtemp+1shrdl,clcalldldispmovdl,byteptrwordtemp+1anddl,0fhcalldldispmovdl,byteptrwordtempshrdl,clcalldldispmovdl,byteptrwordtempanddl,0fhcalldldisppopdxpopcxretendpprocpushordl,30hdldisp1:dldispwdatadispa
cmpjbedldisp1adddl,7movah,2int21hpopaxretendpend.modelsmall.stack.datadw34abh.code.startuppushwdatacalldispapopax ;addsp,2.exit0procpushmovpushaxpushcxpushdxmovax,[bp+4]movcl,4movdl,ahshrdl,cldispadldispdldisp1:dldisp
calldldispmovdl,ahandcalldldispmovdl,alshrdl,clcalldldispmovdl,alandcalldldisppopdxpopcxpopaxpopbpretendpprocpushordl,30hcmpjbedldisp1adddl,7movah,2int21hpopaxretendpend如果利用共享变量传递函数,且变量定义与使用不在同一个源程序中,需要利用PUBLIC、EXTERN声明。解:由一对宏汇编伪指令MACROENDM格式如下:宏名 MACRO形参表]……;宏定义体ENDM宏定义之后就可以使用它,即宏调用:宏名[实参表]宏调用宏展开宏展开的具体过程是:当汇编程序扫描源程序遇到已有定义的宏调用时,即用相应的宏定义体完全替代源程序的宏指令,同时用位置匹配的实参对形参进行取代解:宏调用的参数通过形参、实参结合实现传递,简捷直观、灵活多变。宏汇编的一大特色是它的参数。宏定义时既可以无参数,也可以有一个或多个参数;宏调用时实参的形式也非常灵活,可以是常数、变量、存储单元、指令(操作码)或它们的一部分,也可以是表达式;只要宏展开后符合汇编语言的语法规则即可。解:宏:仅是源程序级的简化:宏调用在汇编时进行程序语句的展开,不需要返回;不减小目标程序,执行速度没有改变通过形参、实参结合实现参数传递,简捷直观、灵活多变子程序:还是目标程序级的简化:子程序调用在执行时由CALL指令转向、RET指令返回;形成的目标代码较短,执行速度减慢需要利用寄存器、存储单元或堆栈等传递参数选择:宏与子程序具有各自的特点,程序员应该根据具体问题选择使用那种方法。通常,当程序段较短或要求较快执行时,应选用宏;当程序段较长或为减小目标代码时,要选用子程序movedoprnd,soprndsoprnddoprnd单元到存储单元的传送功能。答:move macrodoprnd,soprndmovax,soprndmovdoprnd,axendm定义一个宏 logical,用它代表 4条逻辑运算指令:and/or/xor/test注意需要利用3个形式参数并给出一个宏用以与对应宏展开的例子。答:logical macrolcode,dopd,sopdlcodedopd,sopdendm例如,如果使用“andax,[bx]”宏指令如下:logicaland,ax,[bx]解:utol macrolocalcmpal,’A’;小于“A”不转换jbnextcmpal,’Z’;大于“A”不转换next:
janextaddal,20h ;是大写字母则转换为小写字母endm定义一个宏movestrstrn,dstr,sstrstrn一个字符区sstr传送到另一个字符区(假设它们都在数据段)movestr macrostrn,dstr,sstrmovcx,dsmoves,cxmovcx,strnmovdi,offsetdstrmovsi,offsetsstrcldrepmovsb;;重复传送ES:[DI]←DS:[SI]endm第五章解:主存的作用:保存正在使用的、处于活动状态的程序与数据。辅存的作用:长期保存程序文件与数据文件,在需要时将这些文件调入RAM内存并激活使用。cache的作用:提高对存储器的访问速度。虚拟存储:由容量较小的主存与容量较大的辅存构成,其目标是扩大程序员眼中的主存容量。区别:通过存储器访问指令用户可对主存进行随机访问;用户利用操作系统提供的用户命令与功能调用对辅存进行访问。ROM指的是只读存储器,正常工作时只能从中读取信息,但断电后信息不会丢失。以EPROM27648K×88条数据线与1364KB的ROM存储区共需8片2764解:双译码方式使得地址译码器的输出线的数目大为减少,使得芯片设计得时候复杂度就低了。地址线A~A9 04根数据线I/O~I/O4 1片选CS*读写WE*解:假想的RAM有12根地址线、4根数据线片选端CS*或CE*:有效时,可以对该芯片进行读写操作,通过对系统高位地址线的译码来选中各个存储芯片输出OE*:控制读操作。有效时,芯片内数据输出,该控制端对应系统的读控制线MEMR*(MRDC*)写WE*应系统的写控制线MEMW*(MWTC*)解:位片结构:每个存储单元具有一个唯一的地址,可存储1位。(4116)字片结构:每个存储单元具有一个唯一的地址,可存储多位。(2114)SRAM组成单元SRAM组成单元触发器速度快集成度低应用小容量系统DRAM极间电容慢高大容量系统NVRAM带微型电池慢低小容量非易失NVRAM带微型电池慢低小容量非易失EEPROM(E2PROM):采用加电方法在线进行擦除与编程,也可多次擦写FlashMemory(闪存):能够快速擦写的EEPROM块(Block)擦除解:位扩充——存储器芯片数据位数小于主机数据线数时,利用多个存储器芯片在数据“位”方向的扩充;地址扩充(字扩充)——当一个存储器芯片不能满足系统存储容量时,利用多个存储器芯片在“地址”方向的扩充32KBSRAM2114(1K×4)64芯片;32KB存储空间,用DRAM需要16芯片;它们都需要进行位扩充与地址扩充解:比较方便地实现多个存储器芯片组成大容量的存储空间存储器片选信号通常与CPU以采用“全译码”、“部分译码”、“线选译码”方式采用全译码方式可以避免地址重复采用部分或线选译码可以节省译码硬件解:24=16解:解:解:解:解:动态随机存取存储器(DRAM)的存储单元电路动态存储单元是由MOS管的栅极电容C与门控管组成的。数据以电荷的形式存储在栅极电容上,电容上的电压高表示存储数据1;电容没有储存电荷,电压为0,表明存储数据0。因存在漏电,使电容存储的信息不能长久保持,为防止信息丢失,就必须定时地给电容补充电荷,这种操作称为“刷新”由于要不断地刷新,所以称为动态存储。方法:采用“仅行地址有效”方法刷新;刷新周期:15µs刷新次数:1285.15解:4256KBA19-A1645.16解:访问的局部性原理:在一个较短的时间间隔内,由程序产生的cache的作用:提高对存储器的访问速度。虚拟存储:其目标是扩大程序员眼中的主存容量。第七章解:总线:指可以由多个信息处理单元所共享的信息通道。使用特点:⑴在某一时刻,只能由一个主设备控制总线,其他主设备此时可作为从设备出现⑵在某一时刻,只能有一个设备向总线上发送数据,但可以有多个设备从总线上接收数据在各种微机总线中,根据总线连接对象的不同可将它们分为以下几类,它们是:片内总线、芯片总线、板级总线、设备总线_3控制总线。解:分时复用就是一个引脚在不同的时刻具有两个甚至多个作用总线复用的目的是为了减少对外引脚个数在访问存储器或外设的总线操作周期中,这些引脚在第一个时钟周期输出存储器或I/O端口的低8位地址A7~A0,其他时间用于传送8位数据D7~D0解:并行总线:多维数据通过多根信号线同时进行传递。并行同步传输、并行异步传输见P174。解:见P174.解:总线的性能指标包括:总线宽度、标准传输、时钟同步/异步、总线复用、信号线数、总线控制方式总线宽度:它是指数据总线的根数,用bit(位)表示,如8位、16位、32位、64位。7.9解:D0~D7:8位双向数据总线A0~A19:20位输出地址总线ALE:地址锁存允许,每个CPU总线周期有效IOR*:I/O读,输出IOW*:I/O写,输出IOCHRDY:I/O通道准备好,输入第九章解:软件延时、不可编程的硬件定时、可编程的硬件定时解:CLK时钟输入信号——在计数过程中,此引脚上每输入一个时钟信号(下降沿),计数器的计数值减1GATE门控输入信号——控制计数器工作,可分成电平控制与上升沿控制两种类型OUT计数器输出信号——当一次计数过程结束(计数值减为0),OUT引脚上将产生一个输出信号解:8253每个通道有60后,其输出引脚为低电平;当写入计数初值(1计数器)CLK信号端每来一个脉冲减1器就减0,则输出引脚输出高电平,表示计8253的CLK01.5MHz的时钟,欲使OUT0300KHz8253的计数值应为÷300KHz),应选用的工作方式是3解:(1)moval,50hmovdx,207hout dx,almoval,128;80hmovdx,205hout dx,almoval,33hmovout dx,almov
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 旅游行业合同管理策略
- 地下铁道挡土墙施工合同
- 军旅生活编剧招聘协议
- 机场跑道建设施工合同协议
- 银行服务保函协议书
- 广告创意设计师招聘合同
- 广告设计人才派遣协议
- 试驾车辆试驾服务协议
- 酒店锅炉升级拆除施工协议
- 鞋帽批发合伙协议
- 个人车辆抵押借款合同
- 2022电大《建筑材料(A)》期末试题及答案
- 团队合作能力和创新团队建设试题100分标准答案
- 22秋中传媒《传播学概论》作业考核答卷
- 商务英语视听说知到章节答案智慧树2023年山东外国语职业技术大学
- 西安东原地产品牌年度推广方案
- C++程序设计智慧树知到答案章节测试2023年咸阳师范学院
- 五年级上册道德与法治课件-第8课第四课时 影响深远的汉字人教部编版
- 2023-2024学年江苏省吴江市小学语文五年级上册期末高分测试题
- GB/T 23604-2009钛及钛合金产品力学性能试验取样方法
- 第1章 大数据可视化概述
评论
0/150
提交评论