微机原理作业教材
- 格式:doc
- 大小:909.50 KB
- 文档页数:11
《80X86/Pentium微型计算机原理及应用》教材课后习题参考答案第三章3-5(1)MOV SI, 2100H 源:立即数;目标:寄存器(2)MOV CX, DISP[BX] 源:基址,EA=BX+DISP,PA=DS×16+BX+DISP;目标:寄存器(3)源:寄存器;目标:寄存器间接寻址EA=SI,PA=DS×16+SI(4)源:基址加变址,EA=BX+SI,PA=DS×16+BX+SI;目标:寄存器(5)源:寄存器;目标:寄存器(6)源:基址,EA=BX+10H,PA= DS×16+BX+10H;目标:寄存器(7)源:寄存器间接,EA=BX,PA= ES×16+BX;目标:寄存器(8)源:带位移量的基址加变址,EA=BX+SI+20H,PA= DS×16+BX+SI+20H;目标:寄存器(9)源:寄存器;目标:寄存器间接,EA=BP,PA= SS×16+BP(10)源:寄存器;目标:存储器,EA=SP-2,PA= SS×16+SP-23-7(1)源操作数错,基址+基址不能用在存储器寻址方式中,只能基址+变量,改成MOV AX, [BX+SI](2)错,V ALUE1和V ALUE2一般为自己定义的变量名称,则此两操作数的组合形式为存储器和存储器,ADD指令无此组合形式(3)错,立即数不能直接传给段寄存器(4)错,CS不能作为目标操作数(5)错,立即数不能作为目标操作数,两个操作数互换位置即可(6)如果V ALUE1是用DW定义的WORD型变量,则此题正确,否则错误(7)错,段寄存器不能直接传给段寄存器(8)错,移位次数超过1时,应该先将移位次数送给CL,改成MOV CL, 3; ROL [BX][DI],CL(9)错,NOT操作符只有一个操作数(10)对,CS不能作为目标操作数,但可以作为源操作数(11)错,不能直接将立即数压入堆栈(12)错,两处错误,1:IN指令应该AL在前,端口地址在后;2:端口地址100H超过8位数能表示的范围,应该先将100H送给DX,改成MOV DX, 100H; IN AL, DX(13)错,LEA指令的第二操作数必需为存储器寻址方式(14)错,CX不能作为寄存器间接寻址方式,应将CX改成BX/BP/SI/DI之一3-8(1)AX=3355H, SP=1FFEH(2)AX=3355H, DX=4466H, SP=1FFCH3-9 BX=4154H, [2F246H]=6F30H3-10 BX=139EH3-11 SI=0180H, DS=2000H3-12(1) CL=F6H(2) [1E4F6H]=5678H(3) BX=9226H, AX=1E40H(4) SI=9226H, [SI]=[1E4F6]=0024H(5) AX=5678H, [09226H]=1234H3-13 AF=0, CF=1, OF=1, SF=0, ZF=03-14(1) MOV AX, 0 XOR AX, AX SUB AX, AX(2) MOV CL, 4ROL BL,CL (或ROR BL, CL)(3) 题中没规定N1和N2是8位还是16位数,现假定都8位数(也可假定是16位数,程序不一样)MOV AH, 0MOV AL, N1IDIV N2MOV M1, ALMOV M2, AH(4) 题目的意思即使BX的b4,b6,b11位清零AND BX, 0F7AFH(5) XOR AX, 4020H(6) TEST DX, 0201H(7) TEST CL, 1JNZ NEXTINC CL (或DEC CL)NEXT:3-15 假设题目的意思理解为编号从1开始(1) LEA BX, BLOCK+(6-1)*2MOV AX, [BX](2) LEA BX, BLOCKMOV AX, 10[BX](3) LEA BX, BLOCKMOV SI, 0MOV AX, 10[BX][SI](4) MOV AX, BLOCK+103-16(1) 结果存在地址是580H端口中,[580H]=60H(2) 结果存在地址是580H端口中,[580H]=8060H(即[580H]=60H, [581H]=80H)(3) 结果存在AL中,AL=[40H]=4FH(4) 结果存在AX中,AL=[40H]=4FH, AH=[41H](题目中没有给出端口41H中的值)(5) 结果存在地址是45H端口中,[45H]=60H(6) 结果存在地址是45H端口中,[45H]=8060H(即[45H]=60H,[46H]=80H)3-17 假定每小题中NUM1和NUM2都是和题中指定的操作数等长,即(1)中NUM1和NUM2为字变量,(2)(3)中为字节变量,(4)中为双字变量(1) MOV AX, NUM2ADD NUM1, AX(2) MOV CX, 4LEA BX, NUM1XOR AL, AL ; AL清零L1: ADD AL, [BX]INC BXLOOP L1MOV RES, AL(3) MOV CX, 8LEA BX, NUM1XOR AX, AXL1: ADD AL, [BX]JNC L2INC AHL2: INC BXLOOP L1MOV AX, WORD PTR RES(4) MOV AX, WORD PTR NUM1ADD WORD PTR NUM2, AXMOV AX, WORD PTR NUM1+1ADC WORD PTR NUM2+1, AX ; (MOV指令不影响CF标志位,否则不能这么写) 3-18(1) MOV CX, 8LEA BX, NUM1XOR AX, AXL1: ADD AL, [BX]DAAJNC L2INC AHL2: INC BXLOOP L1MOV AX, WORD PTR RES(2) MOV AL, NUM1SUB AL, NUM2DASMOV RES, AL差=90H, CF=13-19(1) MOV AL, NUM1MUL NUM2 ; 8位乘8位MOV WORD PTR RES, AX(2) MOV AX, NUM1IMUL NUM2 ;16位乘16位MOV WORD PTR RES, AXMOV WORD PTR RES+2, DX(3)MOV AL, NUM1MOV BL, 46CBWDIV BLMOV WORD PTR RES, AX(4) MOV AX, NUM1CWDIDIV NUM2 (或DIV NUM2)MOV WORD PTR RES, AXMOV WORD PTR RES+2, DX3-20(1)53乘以2MOV AL, 53SHL AL, 1结果106(2) -49乘以2MOV AL, -49 ; -49补码为CFHSHL AL, 1 ;AL=9EH, 真值即为-98结果-98除以2类似3-21(1) BX=009AH(2) BX=15CH(3) BX=8071H(4) BX=10F7H(5) BX=FF1CH3-22(1) DX=[20506]=0006H BX=0004H(2) SP=1FFEH, [SP]=CX=FFFEH(3) CX=BX=0004H(4) AX=8094H, CF=0(5) AL=[20508H]=87H(6) AL=94H+37H+1=CCH, CF=0, AL=32H(7) SI=9(8) DI=9(9) [DI]=[2050A]=AL=94H(10) AX=17C6H, DX=8094H(11) AH=84H, BL=4(12) IP=DX=17C6H3-23(1) 将存储器中以FIRST为起始地址连续10个字节复制到以SECOND为起始地址的地方(2) 将存储器中数据段中以偏移地址0404H为起始地址,连续80H个字节的空间清零3-24MOV BX, 5MUL BXMOV BX, 2DIV BX3-26 MOV BX, 0A80HMOV AL, 5XLAT3-27(1) IP=1256(2) IP=3280H(3) IP=2450H3-28 IP=009A, CS=2000, [SP]=8F, [SP+1]=3DH, [SP+2]=50H, [SP+3]=40H3-29CMP AL, 1JNZ LAB1CMP AL, 2JNZ LAB2CMP AL,4JNZ LAB3最后一个条件(若位0至位2都是0,则顺序执行),相当于没有,因为不管符不符合这个条件,程序都会按顺序执行。
微机原理及应用书籍微机原理及应用是计算机专业的基础课程之一,主要介绍了微型计算机的工作原理、结构组成以及应用于各个领域的具体实践。
推荐书籍:1. 《计算机组成与设计——硬件/软件接口》(原书第5版)- 作者:Patterson,David A.,Hennessy,John L.《计算机组成与设计》是国际知名的计算机科学教材,深入浅出地介绍了计算机的体系结构、指令系统等内容,对于理解微机原理及应用具有重要意义。
2. 《计算机体系结构——量化研究方法》(原书第6版)- 作者:Hennessy,John L.,Patterson,David A.这本书是《计算机组成与设计》的姊妹篇,着重介绍了计算机体系结构的定量研究方法,有助于深入理解计算机的性能优化与缺陷避免的方法。
3. 《计算机组成原理》(原书第5版)- 作者:唐朔飞,《计算机组成原理》是清华大学计算机科学与技术系的经典教材,针对计算机组成原理的学习提供了详尽的解释和案例,内容全面且实用。
4. 《计算机原理与实践》- 作者:朱战立,《计算机原理与实践》全面介绍了计算机硬件与软件的结构和设计方法,同时通过大量实例讲解了计算机的原理与应用,非常适合初学者入门。
5. 《计算机科学基础(下册)》- 作者:邓俊辉,《计算机科学基础》从计算机科学和工程学的角度出发,全面阐述了计算机科学的核心概念、基础理论和应用技术,对于理解微机原理及应用的重要性具有指导意义。
这些书籍从不同的层面和角度介绍了微机原理及应用的相关内容,通过研读这些书籍可以帮助读者建立起完整的微机原理知识体系,深入理解计算机工作原理、组成结构以及应用在不同领域的具体实践,有助于读者打下坚实的基础。
此外,这些书籍大多被广泛采用,有很好的口碑和学术认可度。
值得一提的是,微机原理及应用是一门需要实践的课程,纸上得来终觉浅,需要通过实际的操作与编程来巩固理论知识。
在阅读这些书籍之后,可以结合课程实践和实验室作业,更好地理解和应用所学知识。
第1章微型计算机基础1.1 计算机中数的表示和运算1.1.1 计算机中的数制及转换在微型计算机中,常见和常使用的数制♦十进制♦二进制♦八进制♦十六进制等。
1.十进制十进制计数特征如下:♦使用10个不同的数码符号0,1,2,3,4,5,6,7,8,9♦基数为10♦每一个数码符号根据它在数中所处的位置(即数位),按逢十进一决定其实际数值。
任意一个十进制正数D,可以写成如下形式:(D)10=D n-l³10 n-1 +D n-2³10 n-2 +…+D l³101+D0³100+D—l³10 -1+D-2³10-2+²²+D-n³10-n2.二进制在二进制计数制中,基数是2,计数的原则是“逢2进1”。
特征如下:♦使用两个不同的数码符号0和l♦基数为2♦每一个数码符号根据它在数中所处的位置(即数位),按逢二进一决定其实际数值。
任意一个二进制正数B,可以写成如下形式:(B)2=B n—l³2 n-1 +B n—2³2 n-2+…+B l³21+B0³20+B—l³2 -1+B-2³1-2+²²+B-n³1-n十进制TO二进制把十进制整数转换成二进制整数通常采用的方法是“除以2取余数”。
把十进制小数转换成二进制小数所采用的规则是“乘2取整”。
在计算机中,数的存储、运算、传输都使用二进制。
[例 1-2] 将十进制小数0.6875转换成二进制小数3.八进制在八进制计数制中,基数是8,计数的原则是“逢8进1”。
特征如下:♦使用8个不同的数码符号0,1,2,3,4,5,6,7♦基数为8♦每一个数码符号根据它在数中所处的位置(即数位),按逢八进一来决定其实际数值。
任意一个八进制正数S,可表示为:(S)8=S n—l³8 n-1+S n—2³8 n-2+²²+S1³8 1+S0³8 0 +S—l³8–1+²²+S-m³8-m转换: 将十进制整数转换成八进制整数的方法是“除以8取余数”。
微机原理课1讲教案绪论§1-1 计算机的发展概况及分类§1-1-1 计算机的发展概况1946年,第一台计算机在美国诞生,至今已有近60年的历史。
60年来,计算机经历了迅猛的发展,得到了广泛的普及,对整个社会的进步和科学的发展产生了极其深远的影响。
在此期间,计算机经历了电子管计算机时代、晶体管计算机时代、集成电路计算机时代、大规模及超大规模集成电路计算机时代。
计算机的功能已经从早期的数值计算、数据处理发展到可以进行知识处理的人工智能阶段,不仅可以处理文字、字符、图形图象信息,而且可以处理音频、视频信息,形成了智能化的多媒体计算机。
在推动计算机技术发展的诸多因素中,除了计算机的系统结构和计算机的软件技术发展起到了重要的作用之外,电子技术特别是微电子技术的发展也起到了决定性的作用。
70年代初,随着大规模集成电路的出现,原来体积很大的中央处理器(CPU)电路集成为一个只有十几平方毫米的半导体芯片,称为微处理器(MPU)。
微处理器的出现,开创了微型计算机的新时代。
以微处理器为核心,再配上半导体存储器(RAM、ROM)、输入/输出接口电路(I/O接口电路)、系统总线以及其他支持逻辑,这样组成的计算机,称为微型计算机。
微型计算机的出现,是计算机技术发展史上的一个新的里程碑,为计算机技术的发展和普及开辟了崭新的途径。
由于微型计算机具有体积小、重量轻、价格便宜、耗电少、可靠性高、通用性和灵活性好等特点,加上超大规模集成电路工艺技术的迅速发展和成熟,使微型计算机技术得到了极其迅速的发展和广泛的应用。
从1971年美国INTEL公司首先研制成功世界上第一块微处理器芯片4004以来,在头十年中,差不多每隔2~3年就推出一代新的微处理器芯片,如今已经推出了多代微处理器产品。
微处理器是计算机的核心部件。
它的性能在很大程度上决定了微型计算机的性能,因此,微型计算机的发展是以微处理器的发展来更新换代的。
第一代(1971~1973)微处理器和微型计算机是4位微处理器和低档8位微处理器时代。
第1章微型计算机基础知识1.1计算机中的数和编码1.1.1计算机中的数制1.1.2符号数的表示法1.1.3二进制数的加减运算1.1.4二进制数的逻辑运算与逻辑电路1.1.5二进制编码1.1.6BCD数的加减运算1.2逻辑单元与逻辑部件1.2.1触发器1.2.2寄存器1.2.3移位寄存器1.2.4计数器1.2.5三态输出门与缓冲放大器1.2.6译码器1.3微型计算机的结构和工作原理1.3.1微型计算机常用的术语1.3.2微型计算机的基本结构1.3.3计算机的工作原理1.4 8086/8088微处理器1.4.18086/8088的结构1.4.28086/8088 的寄存器1.5 8086/8088的存储器结构与堆栈1.5.1存储器编址1.5.2存储器分段和物理地址的生成1.5.3堆栈和栈操作指令1.6 80x86、Pentuim系列微处理器1.6.1 802861.6.2803861.6.3804861.6.4Pentium(奔腾)1.7 新一代微处理器——Itanium(安腾)习题与思考题第2章汇编语言与汇编程序2.1符号指令中的表达式2.1.1常量和数值表达式2.1.2变量和地址表达式2.1.3标号2.1.4变量和标号类型的变更2.2符号指令的寻址方式2.2.1寄存器寻址2.2.2立即寻址2.2.3直接寻址2.2.4间接寻址2.2.5基址寻址2.2.6变址寻址2.2.7基址变址寻址2.2.8存储器寻址中段地址的确定2.3常用指令2.3.1数据传送类指令2.3.2加减运算指令2.3.3位操作指令2.3.4指令应用举例2.4伪指令2.4.1过程的定义2.4.2段的定义2.4.3汇编地址计数器2.4.4段寄存器的假定2.4.5源程序的结束2.4.6宏汇编源程序的格式2.5常用系统功能调用和BIOS 2.5.1系统功能调用2.5.2常用系统功能调用应用举例2.5.3BIOS习题与思考题第3章程序设计的基本技术3.1顺序程序设计3.1.1乘除法指令3.1.2BCD数调整指令3.1.3顺序程序设计举例3.2分支程序设计3.2.1条件转移指令3.2.2无条件转移指令3.2.3分支程序设计举例3.3循环程序设计3.3.1循环程序的基本结构3.3.2重复控制指令3.3.3单重循环程序设计举例3.3.4多重循环程序设计举例3.4串处理程序设计3.4.1方向标志置位和清除指令3.4.2串操作指令3.4.3重复前缀3.4.4串操作程序设计举例3.5子程序设计3.5.1子程序的概念3.5.2子程序的调用指令与返回指令3.5.3子程序及其调用程序设计举例3.6宏功能程序设计3.6.1宏指令3.6.2条件汇编与宏库的使用3.6.3宏功能程序设计举例3.7 80286、80386、80486和Pentium程序设计3.7.180286、80386、80486和Pentium微处理器的指令3.7.2MASM5.0以上版本的伪指令3.7.3存储器操作数中的地址表达式3.7.480x86和Pentiun汇编源程序设计举例习题与思考题第4章总线4.1总线概述4.1.1总线分类4.1.2总线操作4.2 8086/8088的CPU总线与时序4.2.18086/8088的CPU引线4.2.28088的CPU系统和CPU总线4.2.38088的时序4.3 Pentium的CPU总线4.3.1地址线及控制信号4.3.2数据线及控制信号4.3.3总线周期控制信号4.3.4Cache控制信号4.3.5系统控制信号4.3.6总线仲裁信号4.3.7检测与处理信号4.3.8系统管理模式信号4.3.9测试信号4.3.10跟踪和检测信号4.4 ISA(Industry Standard Architecture)局部总线4.4.1ISA局部总线概述4.4.2ISA总线信号4.5 PCI局部总线4.5.1PCI局部总线概述4.5.2PCI系统框图4.5.3PCI 总线信号习题与思考题第5章半导体存储器5.1存储器概述5.1.1存储器的类型5.1.2存储器的性能指标与分级结构5.2常用的存储器芯片5.2.1半导体存储器芯片的结构5.2.2随机读写存储器RAM。
《微机原理及应用》习题答案第一章⏹1.11 请完成下列数制转换:(1)将174.66D转换为对应的二进制和十六进制形式。
(2)将100011101011.01011B转换为对应的十进制和十六进制形式。
(3)将F18A6.6H转换为对应的二进制和十进制形式。
答:174.66D=10101110.1010B=AE.AH100011101011.01011B=2283.34375D=8EB.58HF18A6.6H=989350.375D⏹1.12 请写出与数据+37和-37对应的8位机器数原码、反码和补码,并分别用二进制和十六进制表示出来。
答:-37D=(10100101B)原=(11011010B)反=(11011011B)补⏹1.13 8位机器数46H,若作为无符号数和补码有符号数,其对应的真值各是什么?若作为BCD码和ASCII码,其对应的又是什么?答:无符号数46H=70,补码46H=+70 BCD码46H=46,ASCII码46H=“F”第二章●2.5什么是8088中的逻辑地址和物理地址?逻辑地址如何转换成物理地址?1MB最多能分成多少个逻辑段?请将如下逻辑地址用物理地址表达:(1)FFFFH:0H (2) 40H:17H (3) 2000H:4500H (4) B821H:4567H答:⑴FFFFH:0H = FFFF0H⑵40H:17H = 00417H⑶2000H:4500H = 24500H⑷B821H:4567H = BC777H●2.8已知DS=2000H,BX=0100H,SI=0002,存储单元[20100H]~[20103H]依次存放12H,34H,56H,78H,[21200H]~[21203H]依次存放2AH,4CH,87H,65H,说明下列每条指令执行完后AX寄存器的内容以及源操作数的寻址方式?答:⑴AX=1200H,立即数寻址;⑵AX=0100H,寄存器寻址;⑶AX=4C2AH,直接寻址;⑷AX=3412H,寄存器间接寻址;⑸AX=4C2AH,寄存器相对寻址;⑹AX=7865H,基址变址寻址;⑺AX=65B7H,基址变址相对寻址。
《微型计算机原理及应用》作业
作业组别:第30组
班级:12级轧钢二班
姓名:贾闯
学号:120101020023
指导教师:李艳文
完成时间:2015年 05 月
30.1
一、题目及题目分析描述及要求
题目:内存中SOURCE处存放着10个字节型数据,请记录每个字节数据中二进制位1的个数,并按照数据字节在前,1的个数在后的顺序将处理结果存放到RESULT处。
分析:逐一取出内存中的10个数据,对每个字节型数据进行左移或右移八次,由带进位加法指令adc对一的个数进行求和,最后把所求和放入变量RESULT中。
预期结果:SOURCE = FEH,90H,FFH,DDH,42H,30H,81H,F3H,18H,25H
RESULT = FEH,07H,90H,02H,FFH,08H,DDH,06H,42H,02H,30H,02H,81H,02H,F3H,
06H,18H,02H,25H,03H
二、寄存器及主存等的应用说明
本题原始数据存放在内存SOURCE中,执行结果存放在内存RESULT中。
由si和di分别取得它们的偏移地址,dl存放由SOURCE所取的字节型数据,al用来存放每个字节型数据中二进制位1的个数。
三、程序框图
四、详细程序
.MODEL SMALL
.STACK
.DATA
SOURCE DB 0FEH,90H,0FFH,0DDH,42H,30H,81H,0F3H,18H,25H
COUNT EQU $-SOURCE ;取得source中字节个数RESULT DB 2*COUNT DUP (?)
.CODE
.STARTUP
mov di,offset source ;取得source处的偏移地址 mov si,offset result ;取得result处的偏移地址 mov ch,0
mov cl,count ;循环次数
again: mov dl,[di] ;逐一取出source中的数据 call htoasc ;调用子程序
inc di ;地址加1
loop again
.exit
htoasc proc ;子程序
mov al,0
mov [si],dl ;存放dl到result
next: shr dl,1 ;右移
adc al,0 ;带进位加法,确定1的个数 cmp dl,0 ;dl为零停止循环
jnz next
mov [si+1],al ;存放1的个数到result
inc si ;地址加2
inc si
ret ;返回主程序
htoasc endp
end
五、程序调试的情况、程序运行的结果的分析
刚开始调试时,总感觉寄存器不够用,经过翻阅课本,发现si,di也可以用来取偏移地址。
程序执行结果如下:
另外后来又学习到通过堆栈保护寄存器可以避免寄存器不够用的尴尬,以后可以用堆栈对其加以保护。
30.2
一、题目及题目分析描述及要求
题目:内存SOURCE中存放着10个0至9之间的数字的ascii码或者空白符的ascii 码,要求将0至9之间的数字的ascii码转换为相应的八位二进制数,并将空白字符的ascii码转换为“$”字符的ascii码。
处理结果存放到result处。
分析:分别取出source中的数据或空白字符,与空白字符的ascii码进行比较,若相等则转换为“$”字符的ascii码,若不等则将其减去30h转换为相应的二进制数。
预期结果:SOURCE = 20H, 30H, 31H, 33H, 35H, 20H, 39H, 38H, 37H, 34H RESULT = 24H, 00H, 01H, 03H, 05H, 24H, 09H, 08H, 07H, 04H
二、寄存器及主存等的应用说明
本题原始数据存放在内存SOURCE中,执行结果存放在内存RESULT中。
由si和di分别取得它们的偏移地址,dl存放由SOURCE所取的字节型数据,al用来作为中间过渡量。
三、程序框图
四、详细程序
.MODEL SMALL
.STACK
.DATA
SOURCE DB 20H, 30H, 31H, 33H, 35H, 20H, 39H, 38H, 37H, 34H
COUNT EQU $-SOURCE ;取得source中字节数
RESULT DB COUNT DUP (?)
.CODE
.STARTUP
mov ch,0
mov cl,count ;设定循环次数
mov si,offset source ;取得source的偏移地址
mov di,offset result ;取得result的偏移地址
again: mov dl,[si] ;逐一取出source中的数据
cmp dl,20h ;如果取出的数据为20h则跳转到next1 jz next1 否则减去30h
sub dl,30h
mov al,dl
jmp next2
next1: mov al,24h
next2:
mov [di],al ;存放al数值到result处
inc si ;si地址加1
inc di ;di地址加1
loop again
.EXIT
END
五、程序调试的情况、程序运行的结果的分析:
程序调试情况如下:
达到了预期的结果:
本题与第一题有相似之处,故完成起来比较简单。
本题仍可加以改进,对其进行堆栈保护,这样可以避免寄存器不够用甚至寄存器串用的问题。
30.3
一、题目及题目分析描述及要求
题目:内存中numa与numb处各存放着10个字节型无符号整数,请将它们按元素对应的逐个进行比较。
如果numa中的元素大于numb中的相应的元素的数目多于numb中的元素大于numa中的相应的元素的数目,则显示numa>numb,否则请显示numa<numb或numa=numb
分析:逐一比较numa与numb中相应的的数据,最后统计numa>numb或numa<numb的次数,最后进行比较并进行相应的输出。
预期结果:信息框输出执行结果
二、寄存器及主存等的应用说明
本题原始数据存放在内存numa、numb中。
由si和di分别取得它们的偏移地址,然后逐一比较numa
三、程序框图
四、详细程序
.MODEL SMALL
.STACK
.DATA
NUMA DB 10H, 11H, 12H, 13H, 00H, 95H, 86H, 97H, 08H, 89H
COUNT EQU $-NUMA ;取得numa中字节数
NUMB DB 90H, 81H, 66H, 3AH, 4CH, 37H, 64H, 1EH, 27H, 59H
STR1 DB 'NUMA>NUMB$'
STR2 DB 'NUMA<NUMB$'
STR3 DB 'NUMA=NUMB$'
.CODE
.STARTUP
mov si,offset numa ;取得numa偏移地址
mov di,offset numb ;取得numb偏移地址
mov ch,0
mov cl,count ;确定循环次数
mov bl,0 ;al,bl赋初值为0
mov al,0
again:mov dl,[di] ;dl作为中间寄存器以进行比较
cmp [si],dl ;比较numa与numb中相应数值大小 inc si ;si地址加1
inc di ;di地址加1
ja next1 ;numa>numb跳到next1进行累加
jb next2 ;numa<numb跳到next2进行累加
jmp next3
next1:add bl,1
jmp next3
next2:add al,1
next3:
loop again
cmp bl,al ;比较bl与al
ja label1
jb label2
mov dx,offset str3
jmp label3
label1:
mov dx,offset str1
jmp label3
label2:
mov dx,offset str2
jmp label3
label3:
mov ah,09h ;执行09号功能显示执行结果 int 21h
.EXIT
END
五、程序调试的情况、程序运行的结果的分析:
程序运行情况如下:
执行结果如下:
该题主要是对numa与numb中的数据进行比较,最后执行09号功能进行显示。
10。