《计算机原理》8套习题及答案自学.doc_第1页
《计算机原理》8套习题及答案自学.doc_第2页
《计算机原理》8套习题及答案自学.doc_第3页
《计算机原理》8套习题及答案自学.doc_第4页
《计算机原理》8套习题及答案自学.doc_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

习题1:1. 微机基本结构是什么?微处理器、微型计算机、微型计算机系统有何区别?2. 用二进制补码表示-41、+74、112?3. 数值转换:114.175= ( ) 2=( )16 11001.101B= ( )16= ( )104. 计算机内有一个字节代码10110110B(1) 若把它作为无符号数,则与之对应的十进制是( );(2) 若把它作为有符号补码,则与之对应的十进制是( );(3) 若把它作为ASCII码,而且最高位为奇偶校验位,则采用的是奇校验还是偶校验?该值是什么字符的ASCII码?ASCII码主要用于做什么?(4) 若把它作为非压缩BCD码,则对应的十进制数为( )?注:奇、偶校验的概念l 校验位与数值位中1的个数为偶数,则是偶校验l 校验位与数值位中1的个数为奇数,则是奇校验(5) 8086中PF标志对运算结果的低8位进行校验,请问采用的是奇校验还是偶校验?5. 在计算机中有符号字节数X=20H, Y=90H,请问X+Y=?结果是否有溢出;XY=?结果是否有溢出。6. 计算机中有符号数如何表示,一个字的有符号数范围是多少?7. 什么是总线,微机中按什么原则来使用总线?8. 总线按照功能分为那几类总线?按照在计算机中所处的位置又分为那几类总线?ISA、EISA、PCI三种局部总线有何特点?9. 计算机总线连接时为什么需要使用三态电路和锁存器?选作题:10. CISC架构的计算机与RISC架构的计算机有何区别?11. 浮点数在计算机中以何种格式进行存储?请举例说明习题1答案:1. 微机的基本结构包括主机和外设,主机又包括CPU、存储器、I/O接口和总线,外设包括输入设备和输出设备;微处理器主要指CPU;微型计算机包括主机和外设,其中主机包括微处理器,主要针对硬件部分;微型计算机系统包括微型计算机和软件系统,能够独立运行。2. -41 = (11010111)2 +74 = (01001010)2 -112 = ( 10010000 )23. 数值转换:114.175= ( 0111 0010. 0011 ) 2=( 72.3 )16 (近似值) 11001.101B= ( 19.A )16= ( 25.625 )104. 182;-74;奇校验,6,ASCII用于计算机与外部交换信息;6;奇校验5 . X + Y 00100000 + 10010000 = 10110000 结果不溢出X Y00100000 - 10010000 = 10010000 结果溢出6计算机中有符号数用补码表示,一个字的范围是-32768 327677. 总线是用于传输信息的一组通信线;微机中按照分时复用原则使用总线; 8. 按照功能分为:地址总线、数据总线和控制总线;按照位置分为:CPU总线、局部总线、系统总线和外部总线ISA总线 宽度为16位,频率为8MHz,传输率为16MB/SEISA总线是ISA总线的增强,宽度32位,频率8MHz,传输率为32MB/sPCI总线总线宽度32位,可扩展到64位,总线频率33MHz,也可提高到66MHz,传输率为132MB/s,可扩展到528MB/s,支持即插即用9. 使用三态门可以增加驱动,用作数据输入到总线时的缓冲,当需要总线时,打开三态门,传送数据;不需要总线时,关闭三态门,输出为高阻状态,以便别的器件可以使用总线,因此多个器件接入总线时,一定要使用三态电路;使用D触发器可以进行信号保持,用作信息输出时的锁存习题2:1. 在8086微处理器中执行如下指令后,标志寄存器中状态标志为何值?MOV DX, 6E07HSUB DX, 800AH2. 8086管理的最大存储器空间和I/O端口空间是多少,写出地址范围?为什么8086对存储器要采用分段管理?3. 若程序执行之前,CSE000H和IPFE60H,则该程序入口物理地址是多少?指向这个入口地址的CS和IP的值是唯一的吗?4. 请画出8088最小模式下的总线连接电路?要求包含8282 、8284 、8286。(注意8086与8088处理器的三点区别)5. 8086的RESET引脚是什么信号有效? 8086复位后各寄存器的值是多少?指令队列的状态是什么?CPU执行的第一条指令物理地址是多少?6. 8086/8088可以响应可屏蔽中断和非可屏蔽中断,可屏蔽中断由_引脚的_电平使申请有效,FLAG中的_标志可以控制CPU是否响应这种中断,可屏蔽中断响应时,CPU使_引脚为_电平表明响应中断;非屏蔽中断申请输入端为_引脚,该引脚是_信号有效。7. 8086 CPU在最小模式下M/IO高电平且RD低电平的可能操作为_(多选)(A) 取指令操作 (B) 从外设输入数据(C) 向存储器写数据 (D) 从存储器读数据8. 8086微处理器中,数据段由段寄存器_指示,堆栈段由段寄存器_指示,寄存器CS:IP总是指示_地址,一般情况下,取出一个字节指令后,寄存器_会自动加1。在硬件上可以用_和_来改变IP的内容,在软件上可以通过_和_来改变IP的内容。9. 如图所示,8086工作在最小模式,且AL = 80H,执行MOV 1000H, AL指令过程中(假设DS = 0000H),请问1000H和80H两个数分别在什么时候,出现在8086 CPU的那些引脚上?CLKM/IOA19A16BHEALEWRDT/RDENT1T2T3T4地址地址数据AD15AD0S3 S6选作题:1. 80386内部包括那6个功能部件?80386有那三种工作方式?2. 80386如何在8086的基础上扩展了数据寄存器和地址指针寄存器?3. 80386有多少根地址线和数据线?其最大寻址范围是多少?80386对存储器如何采用分段和分页管理?4. 80386的虚拟存储机制是什么样的?1. 8086微处理器内部包括执行单元EU和总线接口单元BIU,请简要说明两个部分主要功能是什么?请指出下列哪些部分属于EU,哪些部分属于BIU?(8分)1)段寄存器CS、DS、ES、SS2)预取指令缓冲队列3)地址指针寄存器SP、BP、SI、DI4)指令译码及控制5)数据寄存器AX、BX、CX、DX6)指令指针寄存器IP7)20位物理地址加法器8)总线接口控制电路9)算术逻辑单元ALU10)标志寄存器FLAG 属于EU的有 _、_、_、_、_属于BIU的有_、_、_、_、_2. 按照图4-1连接,8088从存储器读取数据,若DS=B000H,则执行指令MOV AL, E000H时,8088需要执行以下一系列处理,请标明处理的先后顺序。(6分)A. CPU发读命令;B. BIU形成20位物理地址;C. BIU将系统数据总线上的数据送到CPU内部总线,EU从内部总线获得数据;D. EU计算得到有效地址,并传送给BIU;E. 存储器将被选中单元的内容送系统数据总线;F. CPU输出物理地址,经锁存后传送到地址译码器,选择相应存储器;先后顺序为:_、_、_、_、_、_。5.习题3:1、8086系统中,请说明下列指令的源操作数的寻址方式是什么?1)MOV AX, 1234H2)MOV AX, 1234H3)MOV AX, BX4)MOV AX, 1234HBX + SI5)MOVSB6)IN AL, DX2、请在下表中画出下列数据段以十六进制表示的各单元值(表格中每个单元表示一个字节),并写出变量var1, var2, var3的偏移地址和cnt的值。0030H低地址高地址data SEGMENT para ORG 30Hvar1 DB -2, A, 2 dup(23)var2 DW -1cnt EQU $-var1var3 DW var2data ENDS3、以下程序实现将变量var进行var*10+600的操作,并将计算结果保存在变量result中,当程序执行到地址M5的时候,请在以下表格中画出当前堆栈指针的位置和堆栈里的内容(程序断点可以用标号,在堆栈中可用寄存器名代表保存的内容,SS的内容不用指定,表格的每个单元表示一个字)。(6分)高地址低地址data segment var dw 1000result dd ?data endssseg segment stackdb 100 dup(?)sseg endscode segment assume cs:code, ds:data, ss:ss_segmain proc farpush dsmov ax, 0push axmov ax, datamov ds, axmov ax, varM1:call CaculateM2:dw 10M3:dw 600M4:lea bx, resultmov bx, axmov bx+2, dxretmain endpCaculate proc pushbpmovbp, sppushsipushbxmovbx, bp+2movsi, cs:bxmulsiM5:addax, cs:2bxadcdx, 0addbx, 4movbp+2, bxpopbxpopsipopbpretCaculate endpcode endsend main4、问答题1)若AL = 81H,则执行指令CBW后AH的内容为多少?2)若BL = BEH,执行下列指令序列,则每执行一步,BL和CF的值为多少?SHL BL, 1 ;BL = _, CF = _MOV CL, 2SHR BL, CL ; BL = _, CF = _OR BL, 80SAR BL, 1 ; BL = _, CF = _ROR BL,CL ; BL = _, CF = _INC CLRCL BL, CL BL = _, CF = _3)什么是短跳转、近跳转、远跳转?4)若当前SP = 1000H,CS = B000H ,IP = 0100H,且当前FLAG = 2345H,则执行指令INT 21H以后,SP的值变为多少?堆栈段中6个存储单元0FFFH、0FFEH、0FFDH、0FFCH、0FFBH、0FFAH的值分别是多少?5、请写出程序段实现下列功能例如:从160H端口读取1个字节 MOV DX, 160H IN AL, DX1) 将一个8位数20H写入到地址为20H的端口;2) 若AL = 56H, BL = 57H,将这两个压缩格式BCD码相加并将结果保存到存储单元2000H中;3) 将2个32位无符号数DAT1和DAT2相乘,结果保存在64位无符号数中,请编写程序段。4) 求数据段偏移地址为1000H开始的一个字符串的长度,字符串以ASCII码0为结束符,长度要求包括结束符;(提示:初始化AL = 0 CX = 0FFFFH,然后使用REPNZ SCASB命令,最后根据CX的值计算字符串长度)习题3:1、8086系统中,请说明下列指令的源操作数的寻址方式是什么?1)MOV AX, 1234H立即数寻址2)MOV AX, 1234H直接寻址3)MOV AX, BX寄存器间接寻址4)MOV AX, 1234HBX + SI相对基址变址寻址5)MOVSB数据串寻址6)IN AL, DXI/O端口间接寻址2、请在下表中画出下列数据段以十六进制表示的各单元值(表格中每个单元表示一个字节),并写出变量var1, var2, var3的偏移地址和cnt的值。FEH0030H低地址高地址data SEGMENT para41H ORG 30H32Hvar1 DB -2, A, 2 dup(23)32H33Hvar2 DW -1FFH33Hcnt EQU $-var1FFHvar3 DW var200H36Hdata ENDSvar1: 0030Hvar2:0036Hvar3:0038Hcnt = 83、以下程序实现将变量var进行var*10+600的操作,并将计算结果保存在变量result中,当程序执行到地址M5的时候,请在以下表格中画出当前堆栈指针的位置和堆栈里的内容(程序断点可以用标号,在堆栈中可用寄存器名代表保存的内容,SS的内容不用指定,表格的每个单元表示一个字)。(6分)DS高地址低地址data segment M20var dw 1000BPresult dd ?BXSIdata endssseg segment stackdb 100 dup(?)sseg endscode segment assume cs:code, ds:data, ss:ss_segmain proc farpush dsmov ax, 0push axmov ax, datamov ds, axmov ax, varM1:call CaculateM2:dw 10M3:dw 600M4:lea bx, resultmov bx, axmov bx+2, dxretmain endpCaculate proc pushbpmovbp, sppushsipushbxmovbx, bp+2movsi, cs:bxmulsiM5:addax, cs:2bxadcdx, 0addbx, 4movbp+2, bxpopbxpopsipopbpretCaculate endpcode endsend main4、问答题1)若AL = 81H,则执行指令CBW后AH的内容为多少?AH = 0FFH2)若BL = BEH,执行下列指令序列,则每执行一步,BL和CF的值为多少?SHL BL, 1 ;BL = _7CH_, CF = _1_MOV CL, 2SHR BL, CL ; BL = _1FH_, CF = _0_OR BL, 80SAR BL, 1 ; BL = _CFH_, CF = _1_ROR BL,CL ; BL = _F3H_, CF = _1_INC CLRCL BL, CL BL = _BFH_, CF = _1_3)什么是短跳转、近跳转、远跳转?短跳转:段内直接跳转,偏移量为-128127近跳转:段内直接跳转,偏移量为-3276832767 远跳转:段间直接跳转4)若当前SP = 1000H,CS = B000H ,IP = 0100H,且当前FLAG = 2345H,则执行指令INT 21H以后,SP的值变为多少?堆栈段中6个存储单元0FFFH、0FFEH、0FFDH、0FFCH、0FFBH、0FFAH的值分别是多少?SP = 0FFAH,(0FFFH) = 23H(0FFEH) = 45H(0FFDH) = B0H(0FFCH) = 00H(0FFBH) = 01H(0FFAH) = 00H5、请写出程序段实现下列功能例如:从160H端口读取1个字节 MOV DX, 160H IN AL, DX5) 将一个8位数20H写入到地址为20H的端口;MOVAL, 20HOUT20H, AL6) 若AL = 56H, BL = 57H,将这两个压缩格式BCD码相加并将结果保存到存储单元2000H中;ADDAL, BLDAAMOV2000H, AL7) 将2个32位无符号数DAT1和DAT2相乘,结果保存在64位无符号数中,请编写程序段。DAT1DD12345678HDAT2DD9ABCDEFHRESULTDQ0MOVAX, word ptr DAT2;(DAT1)L * (DAT2)LMULword ptr DAT1MOVword ptr RESULT, AXMOVword ptr RESULT, DX;保存结果MOVAX, word ptr DAT2MULword ptr DAT1 + 2;(DAT1)H * (DAT2)LADDword ptr RESULT + 2, AXADCword ptr RESULT + 4, 0MOVAX, word ptr DAT2 + 2;(DAT1)L * (DAT2)HMULword ptr DAT1ADDword ptr RESULT + 2, AXADCword ptr RESULT + 4, DXADCword ptr RESULT + 6, 0MOVAX, word ptr DAT2 + 2;(DAT1)H * (DAT2)HMULword ptr DAT1 + 2ADDword ptr RESULT + 4, AXADCword ptr RESULT + 6, DX8) 求数据段偏移地址为1000H开始的一个字符串的长度,字符串以ASCII码0为结束符,长度要求包括结束符;(提示:初始化AL = 0 CX = 0FFFFH,然后使用REPNZ SCASB命令,最后根据CX的值计算字符串长度)MOVAX, DSMOVES, AXMOVDI, 1000HMOVAL, 0MOVCX, 0FFFFHCLDREPNZSCASBNOTCX;或者MOVAX, 0FFFFH;SUBAX, CX;MOVCX, AX;此时CX中存放的就是字符串的长度9)习题3:1. 从屏幕上输入小写字母,转换为大写字母并输出要求:程序具有可读性、容错性2. 编写一子程序asc2bin,将ASCII转换为二进制数要求:输入参数:AL中存放需要转换的ASCII输出参数:AL中存放转换后的二进制数并返回3. 内存中存放8个16位有符号数,求8个数值之和,并将结果存放在内存变量SUM中注:程序中应用到字扩展为双字的指令CWD4. 内存中存放8个8位有符号数,请按从大到小顺序排列5. 内存中有8个16位数,请编写程序将8个数倒序排放例:定义内存中8个数bufdw100, 3, 1, 20, 40, -2, 7, 10程序运行后,buf开始应为:buf dw 10, 7, -2, 40, 20, 1, 3, 1006. 从键盘输入4位十进制数,然后以16进制形式显示在屏幕上.例:键盘输入:1024屏幕上应显示:0400H要求:键盘输入和显示结果时均应有提示7. 数据段从100H开始存放字符串str1,从200H开始存放str2,二者均以NULL字符为结束符,编写程序将str2拷贝到str1末尾,形成一个完整字符串例:ORG 100Hstr1db0dh, 0ah, Hello , 0ORG200Hstr2dbAutomation!, 0程序运行后结果应为:str1db0dh, 0ah, Hello Automation!, 08. 以10进制形式显示内存中一有符号字节数据例:vardb0ffH屏幕应显示:The result is: -19. 将一个16位的无符号数var, 转换为非压缩格式BCD码,存放在内存中buf开始的单元中。(按高位在前、低位在后的顺序存放)选作题:10. 内存中从str开始存放一字符串,结束符为NULL字符,请编写程序统计该字符串中单词的个数例:str1db0dh, 0ah, Hello world, welcome to DUT. CPU is central processing unit!, 0h统计.中的单词个数,结果为1011 编写程序用键盘17键,模拟7个音符,进行键盘演奏!注:需要对8253的定时器2和8255的PB口进行初始化习题4答案:1. 从屏幕上输入小写字母,转换为大写字母并输出要求:程序具有可读性、容错性data segment parastr1db0dh, 0ah, Please input(a-z): $str2db0dh, 0ah, The input is error!$str3db0dh, 0ah, The result is: $data endsss_seg segment stackdw100 dup(0)ss_seg endscode segment paraassume cs:code, ss:ss_seg, ds:datamain proc farmovax, datamovds, axmain1:leadx, str1;显示提示信息movah, 9int21hmovah, 1;输入小写字母int21hcmpal, a;判断输入字符是否为azjberrorcmpal, zjaerrorjmpnexterror:leadx, str2;显示错误提示信息movah, 9int21hjmpmain1;跳转,重新输入next:subal, 20hpushaxleadx, str3;显示输出提示信息movah, 9int21hpopaxmovdl, al;显示转换后的大写字母movah, 2int21hmovax, 4c00h;返回操作系统int21hmain endpcode endsend main2. 编写一子程序asc2bin,将ASCII转换为二进制数要求:输入参数:AL中存放需要转换的ASCII输出参数:AL中存放转换后的二进制数并返回;功能:将ASCII转换为二进制数;输入参数:AL中存放需要转换的ASCII;输出参数:AL中存放转换后得到的二进制数asc2binprocsubal, 30hcmpal, 9jbeasc2bin_1subal, 7asc2bin_1: retasc2binendp3. 内存中存放8个16位有符号数,求8个数值之和,并将结果存放在内存变量SUM中注:程序中应用到字扩展为双字的指令CWDdata segment parabufdw-1, 30000, 35000, 36000, 37000, 20000, 10000, -2sumdd0data endsss_seg segment stackdw100 dup(0)ss_seg endscode segment paraassume cs:code, ds:data, ss:ss_segmain proc farmovax, datamovds, axleabx, buf;bx指向buf首地址movcx, 8main1:movax, bxcwd;有符号数字扩展为双字addword ptr sum, ax;32位数相加adcword ptr sum + 2, dxincbxincbxloopmain1;循环8次movax, 4c00hint21hmain endpcode endsend main4. 内存中存放8个8位有符号数,请按从大到小顺序排列data segment parabufdb-1, 30, 35, 36, 37, 20, 100, -2data endsss_seg segment stackdw100 dup(0)ss_seg endscode segment paraassume cs:code, ds:data, ss:ss_segmain proc farmovax, datamovds, axmovcx, 8main1:movbx, 0;外循环movdi, 0pushcxmain2:moval, bufbx;内循环cmpal, bufbx+1jgenextxchgal, bufbx+1;不符合规则, 则交换数据movbufbx, almovdi, 1next:incbxloopmain2popcxcmpdi, 0;判断内循环是否发生数据交换jzexitloopmain1 exit:movax, 4c00hint21hmain endpcode endsend main5. 内存中有8个16位数,请编写程序将8个数倒序排放例:定义内存中8个数bufdw100, 3, 1, 20, 40, -2, 7, 10程序运行后,buf开始应为:buf dw 10, 7, -2, 40, 20, 1, 3, 100data segment parabufdw-1, 30000, 35000, 36000, 37000, 20000, 10000, -2data endsss_seg segment stackdw100 dup(0)ss_seg endscode segment paraassume cs:code, ds:data, ss:ss_segmain proc farmovax, datamovds, axmovbx, 0movcx, 8main1:pushbufbxincbxincbxloopmain1;8个数依次入堆栈leabx, bufmovcx, 8main2:popbufbxincbxincbxloopmain2;8个数依次出栈movax, 4c00hint21hmain endpcode endsend main6. 从键盘输入4位十进制数,然后以16进制形式显示在屏幕上.例:键盘输入:1024屏幕上应显示:0400H要求:键盘输入和显示结果时均应有提示data segment parabufdb4 dup(0)vardw0str1db0dh, 0ah, Please input four numbers(0-9): $str2db0dh, 0ah, The input is error, please try again. $str2db0dh, 0ah, The hex result is: $data endsss_seg segment stackdw100 dup(0)ss_seg endscode segment paraassume cs:code, ds:data, ss:ss_segmain proc farmovax, datamovds, axmain1:leadx, str1;显示数据输入提示信息movah, 9int21hmovbx, 0movcx, 4;循环输入4个数main2:movah, 1;DOS功能调用,输入数据int21hcmpal, 0;判断输入字符是否为0-9jberrorcmpal, 9jaerror;若不为0-9,则进行错误处理subal, 30h;ASCII转换为二进制,得到0-9moval, bufbx;存入buf开始的缓冲区incbxloopmain2jmpnext;数据输入正确后,跳转到后续处理error:leadx, str2;显示错误提示信息movah, 9int21hjmpmain1;跳转到重新输入next:movax, 0;(0*10+B3)*10+B2)*10+B1)*10+B0movdx, 0;得到输入的4位十进制数movsi, 10movbx, 0movcx, 4main3:mul10;相乘后dx仍然保持0addal, bufbxadcah, 0incbxloopmain3;循环4次乘10movvar, ax;得到的4位十进制数存放到var中leadx, str3movah, 9int21h;显示输出提示符movch, 4;以16进制显示输入的数据, 循环4次movcl, 4main4:rolvar, cl; 循环左移4位movax, varandax, 000fhcallbin2asc;二进制转换为ASCIIcallpchar;显示16进制decchjnzmain4moval, Hcallpcharmovax, 4c00hint21hmain endp;功能:将一个二进制数转换为ASCII;输入参数:AL中存放要转换的二进制数;输出参数:AL中存放转换后的ASCIIbin2ascprocandal, 0fhaddal, 30hcmpal, 39hjbebin2asc_1addal, 07hbin2asc_1:retbin2ascendp;功能:显示字符;输入参数:AL中存放要显示字符的ASCII;输出参数:无pcharprocmovdl, almovah, 2int21hretpcharendpcode endsend main7. 数据段从100H开始存放字符串str1,从200H开始存放str2,二者均以NULL字符为结束符,编写程序将str2拷贝到str1末尾,形成一个完整字符串例:ORG 100Hstr1db0dh, 0ah, Hello , 0ORG200Hstr2dbAutomation!, 0程序运行后结果应为:str1db0dh, 0ah, Hello Automation!, 0data segment paraORG100Hstr1db0dh, 0ah, Hello , 0ORG200Hstr2dbAutomation!, 0data endsss_seg segment stackdw100 dup(0)ss_seg endscode segment paraassume cs:code, ds:data, ss:ss_segmain proc farmovax, datamovds, axmoves, axleadi, str1;es:di指向str1首地址moval, 0repnzscasb;查找str1结束符NULLdecdi;找到str1结束符,并让es:di指向该位置leasi, str2;ds:si指向str2首地址cld;DF = 0main1:lodsb;AL (ds:si), si = si + 1stosb;(es:di) AL, di = di + 1cmpal, 0;判断是否到str2的结束符jnzmain1leasi, str1;ds:si指向拷贝后的str1首地址main2:lodsb;显示拷贝后的str1字符串cmpal, 0jzexitcallpcharjmpmain2exit:movax, 4c00hint21hmain endp;功能:显示字符;输入参数:AL中存放要显示字符的ASCII;输出参数:无pcharprocmovdl, almovah, 2int21hretpcharendpcode endsend main8. 以10进制形式显示内存中一有符号字节数据例:vardb0ffH屏幕应显示:The result is: -1data segment paravardb7fhstr1db0dh, 0ah, The result is: bufdb4 dup( )db$data endsss_seg segment stackdw100 dup(0)ss_seg endscode segment paraassume cs:code, ds:data, ss:ss_segmain proc farmovax, datamovds, axmovbuf, +cmpvar, 0;判断var是正数,还是负数jgenextmovbuf, -negvar;若var为负,则得到其相反数next:moval, varmovcx, 3movdl, 10leabx, buf+3main1:movah, 0divdl; (AX / 10)商 aladdah, 30h; (AX / 10)余数 ahmovbx, ahdecbxloopmain1;循环3次,分别得到百、十、个位leadx, str1;显示10进制数movah, 9int21hexit:movax, 4c00hint21hmain endpcode endsend main9. 将一个16位的无符号数var, 转换为非压缩格式BCD码,存放在内存中buf开始的单元中。(按高位在前、低位在后的顺序存放)data segment paravardw800Hbufdb5 dup(0)data endsss_seg segment stackdw100 dup(0)ss_seg endscode segment paraassume cs:code, ds:data, ss:ss_segmain proc farmovax, datamovds, axmovcx, 16;(0*2 + B15)*2 + B14)*2 + + )*2 + B0main1:shlvar, 1;得到var的Bi位leabx, 4pushcxmovcx, 5main2:moval, bufbx;执行buf*2 + Bi操作adcal, alAAA非压缩格式BCD码调整movbufbx, aldecbxloopmain2;内循环为5次popcxloopmain1;外循环为16次exit:movax, 4c00hint21hmain endpcode endsend main选作题:10. 内存中从str开始存放一字符串,结束符为NULL字符,请编写程序统计该字符串中单词的个数例:str1db0dh, 0ah, Hello world, welcome to DUT. CPU is central processing unit!, 0h统计.中的单词个数,结果为1011 编写程序用键盘17键,模拟7个音符,进行键盘演奏!注:需要对8253的定时器2和8255的PB口进行初始化习题5:1. 如图4-

温馨提示

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

评论

0/150

提交评论