北京理工大学微机原理总汇编语言上机实验题
- 格式:doc
- 大小:21.16 KB
- 文档页数:18
汇编语言实验报告实验一 DOS环境下的汇编语言编程环境使用(基础与验证型)班级:05211002姓名:张宁学号:1120102310实验日期:2012.9.7晚6:00~9:00汇编语言实验报告实验一 DOS 环境下的汇编语言编程环境使用(基础与验证型)一、实验要求和目的1、掌握汇编语言程序设计的基本流程和学会上机开发简单程序;2、熟练掌握宏汇编程序MASM 的使用;3、熟练掌握连接程序LINK 的使用;4、熟练掌握DEBUG 的使用;二、软硬件环境1、硬件环境:计算机系统windows;2、软件环境:装有MASM、DEBUG、LINK、等应用程序。
三、实验涉及的主要知识汇编语言程序设计上机开发过程如图1.1 所示。
四、实验内容与步骤1、汇编、链接并调试给出的简单程序,找出程序中的错误。
(一)录入并建立汇编语言源程序文件(ASM 文件)(二)用汇编程序MASM 将ASM 文件汇编成目标程序文件(OBJ 文件)(三)用连接程序LINK 生成可执行程序文件(EXE 文件)(四)程序的调试2、完成程序设计:分类统计字数组data 中正数、负数和零的个数,并分别存入内存字变量Positive、Negative 和Zero 中,数组元素个数保存在其第一个字中。
使用Debug 查看Positive、Negative 和Zero 三个变量的数据。
五、实验过程及结果:实验一:1.输入给出的程序2.运行输入的程序,发现了三处错误:根据错误提示,发现错误为ADDITION后未打冒号,CMP错打为COM。
修改原代码:改为:3.代码编译成功,生成OBJ文件,再生成EXE文件,可成功运行。
4.在原程序代码后添加两行代码,以验证ADDITION的逻辑正确性,改动如下:现实在DATA1中添加字节型sum ,再将ADDITION的运行结果,从AX送到sum中去。
5.调试发现ADDITION并没用正确运行。
检查语句逻辑性发现,应将JAE改成JB,才能实现累加并终结。
一、实验目的1、掌握子程序有关基本知识,学会子程序设计方法;2、掌握主程序与子程序之间的调用关系及调用方法;3、掌握汇编语言字符串处理方法;4、掌握字符串的输入输出程序设计方法;5、掌握数制转换程序实现方法。
二、实验软硬件环境1、硬件环境:惠普64 位一体化计算机及局域网;2、软件环境:windows 8,红蜘蛛管理系统,MASM for Windows。
三、实验相关知识把功能相对独立的程序段单独编写和调试,作为一个相对独立的模块供程序使用,就性成子程序。
子程序可以实现源程序的模块化,可简化源程序结构,可以提高编程效率。
1) 子程序的定义语句格式汇编语言子程序以proc 语句行开始,以endp 语句行结束。
如:过程名PROC near[或far]过程体..........................过程名ENDP在主程序中用CALL 过程名调用。
主程序和子程序之间传递参数通常通过栈来进行,当然也可以用某些缺省的寄存器或内存来传递。
但以通过栈来传递参数程序的通用性最强。
2) 子程序调用说明子程序从PROC 语句开始,以ENDP 语句结束,程序中至少应当包含一条RET 语句用以返回主程序。
在定义子程序时,应当注意其距离属性:当子程序和调用程序在同一代码段中时,用NEAR 属性;当子程序及其调用程序不在同一个代码段中时,应当定义为FAR 属性。
当由DOS 系统进入子程序时,子程序应当定义为FAR 属性。
为执行子程序后返回操作系统,在子程序的前几条指令中设置返回信息。
3) 子程序使用中的问题A、主程序调用子程序是通过CALL 指令来实现的。
子程序执行后,通过RET 指令,返回主程序调用指令CALL 的下一条指令,继续执行主程序。
一个子程序可以由主程序在不同时刻多次调用。
如果在子程序中又调用了其他的子程序,则称为子程序的嵌套。
特别是当子程序又能调用子程序本身时,这种调用称为递归。
B、调用子程序时寄存器及所用存储单元内容的保护。
微型计算机原理与接口技术软件实验报告(一)班级:学号:姓名:2012.11一、实验题目1、学习并掌握IDE86集成开发环境的使用;2、参考书例4-8,以单步形式观察程序的执行过程;3、修改该程序,求出10个数中的最大值和最小值。
以单步形式观察如何求出最大值、最小值。
二、实验目的1、熟悉IDE86集成开发环境的使用。
2、通过编程、上机调试,进一步理解汇编语言的设计思路与执行过程。
3、锻炼动手编程,独立思考的能力。
三、实验内容3.1题目2设计思路及流程图3.1.1设计思路为实现求和的功能,首先将十个数存入内存中,设定AX为计算结果存储单元,CX为计数器,随后建立循环,将每个数依次加到AX上,直至CX=O,最后将AX中存储的结果移动到SUM存储单元中,结束程序。
3.1.2程序流程图题目2的程序流程图如图1所示:图1题目2的程序流程图3.2题目3设计思路及流程图3.2.1设计思路为实现求取最大值最小值的功能,首先将十个数存入内存中,设定CX为计数器,将第一个数分别存入到MAX与M1N储存单元中,随后建立循环,将每个数依次与MAX(MIN)相比较,如果有大于(小于)MAX(MIN)中的,移入相应存储单元,直至CX=0。
最后将MAX和MIN中存储的数据打印在屏幕上,返回DoS系统,结束程序。
3.2.2程序流程图题目3的程序流程图如图2所示:图2题目3的程序流程图4.1题目2源程序DATA SEGMENT ;定义数据段TAB1E DB12H,23H,34h,45h,56h ;10个加数DB67H,78H z89H z9AH z0FDHSUM DW?DATA ENDSCODE SEGMENT ;定义代码段ASSUMECS:CoDE,DS:DATA,ES:DATASTART: MOVAX z DATAMOVDS,AX ;初始化DSMOVES,AX ;初始化ES1EASUAB1E ;SI指向TAB1EMOVCX,10 ;循环计数器XORAX z AX ;AX为中间结果NEXT: ADDA1z[SI] ;把一个数加到A1中ADCAH z O ;若有进位,则加到AH中INCSI ;指向下一个数1OOPNEXT ;若未加完,继续循环MOVSUM Z AX ;若结束,存结果于SUMH1T ;结束CODE ENDS ;代码段结束END START ;汇编结束DATA SEGMENT ;定义数据段TAB1E DB12H,23H,34h,45h,56h;十个待比较数DB67H,78H,89H,9AH,0FDHMAX DB?MIN DB?A DB,MaxOS ;屏幕提示字符串B DBoDH,0AH「Min:,SDATA ENDSCODE SEGMENT;定义代码段ASSUMECS:CoDE,DS:DATA,ES:DATASTART: MOVAX z DATAMOVDS,A× ;初始化DSMOVES,AX ;初始化ES1EASIJAB1E ;SI指向TAB1EMOVCX z IO ;循环计数器XORAX z AX ;清空AXC1D ;清方向标志DF1ODSB ;A1存入一个8位数MOVMAX z A1 ;将该数送MAXMOVMIN Z A1 ;将该数送MINDECCX ;计数器减一NEXT: 1ODSB ;取下一个数CMPA1Z MAX ;与MAX比较JA1ARGERCMPA1Z MIN JBSMA11ERJMPGOON1ARGER:M0VMAX,A1JMPGOONSM A11ER:MOVMIN z A1GO ON:1OOPNEXT1EADX,AMOVAH z09HINT21HMOVA1z MAXCA11DISP1AY1EADX,BMOVAH z09HINT21HMOVA1z MINCA11DISP1AYMOVAH z4CHINT21H DISP1AYPROCPUSHBXPUSHCX ;若大于转1ARGER;否则与MIN比较;若小于转SMA11ER ;否则转GOON;A1的值存入MAX;转到GOON;A1的值存入MIN;CX-1,若CXWO转NEXT ;获取A的首地址;调用字符串显示功能;MAX值存入A1;调用显示子程序;获取B的首地址;调用字符串显示功能;MIN值存入A1;调用显示子程序;调用返回DoS功能;十六进制显示子程序;保持BX内容;保持CX内容MOVBH z A1MOV CH,2 ;设置循环计数器ROT: MOV C1,4 ;移位次数RO1 BX z C1MOV A1B1AND A1z OFH ;清空A1高四位ADD A1,30H ;0-9转换ASCII码CMP A1z3AHJ1 PRITADD A1,7H ;A-F转换ASCII码PRIT: MOV D1,A1MOV AH,2 ;调用字符显不功能INT 21HDEC CH ;计数器-1JNZ ROT ;CHW0,继续循环POPCX 丁恢复CX内容POPBX 丁恢复BX内容RET ;返回D ISP1AYENDPCODEENDS ;代码段结束END START ;结束五、实验运行结果5.1题目2运行结果前五个数运算结束后寄存器状态:图3 其中ax 值为图4前五个数计算后AX 的值故此时前五个数之和为0104Ho 前八个数运算结束后寄存器状态:×0000图6前八个数计算后AX 的值故此时前八个数之和为026CH o 全部运算结束后,ax 的值为:图7计算结束后AX 的值故十个数的和为0403H 。
实验四分支和循环程序设计实验(设计性实验)一、实验要求和目的1.熟悉汇编语言程序设计结构;2.熟悉汇编语言分支程序基本指令的使用方法;3.掌握利用汇编语言实现单分支、双分支、多分支的程序设计方法;4.了解汇编语言循环程序设计的基本流程;5.熟悉汇编语言循环基本指令的使用方法;6.掌握利用汇编语言的循环指令完成循环程序设计方法。
二、软硬件环境1、硬件环境:计算机系统windows;2、软件环境:装有MASM、DEBUG、LINK、等应用程序。
三、实验涉及的主要知识在实际应用中,经常根据一些条件来选择一条分支执行。
汇编语言的条件判断主要是通过状态寄存器中的状态位、无符号数相减或有符号相减而导致的结果来进行。
1.无条件转移指令JMP无条件转移指令JMP 是使程序无条件转移至目标处,又分为段内转移、段间转移。
2.条件转移指令JXX条件转移指令可分为三大类:1).简单条件转移指令指令。
根据单个标志位的状态判断转移条件。
标志位指令转移条件意义JC CF=1 有进位/借位CFJNC CF=0 无进位/借位JE/JZ ZF=1 相等/等于0ZFJNE/JNZ ZF=0 不相等/不等于0JS SF=1 是负数SFJNS SF=0 是正数JO OF=1 有溢出OFJNO OF=0 无溢出JP/JPE PF=1 有偶数个1PFJNP/JPO PF=0 有奇数个12).无符号数条件转移指令。
假设在条件转移指令前使用比较指令,比较两个无符号数A,B,指令进行的的操作是A-B,其转移指令如下:指令转移条件意义JA/JNBE CF=0 AND ZF=0 A>BJAE/JNB CF=0 OR ZF=1 A>=BJB/JNAE CF=1 AND ZF=0 A<BJBE/JNA CF=1 OR ZF=1 A<=B3).带符号数条件转移指令。
指令转移条件意义JG/JNLE SF=OF AND ZF=0 A>BJGE/JNL SF=OF OR ZF=1 A>=BJL/JNGE SF OF AND ZF=0 A<BJLE/JNG SF OF OR ZF=1 A<=B在汇编程序设计中,要熟练使用循环指令和跳转等指令来实现循环,理解循环体结构中的初始化部分、循环体、结束部分,并且要结合前面分支结构相关的知识点,加深对循环结构的理解和掌握。
微机原理---汇编语⾔习题(完整参考答案)MIS 硬件原理复习内容1.数的不同进制转换,原码、反码、补码转码,BCD码2.掌握D触发器逻辑3.D触发器组成的电路:卡诺图及简化、真值表、波形图、状态转换图4.三态门、总线结构5.存储器扩展⽅法:地址总线的作⽤,内存分页技术,地址译码⽅法,译码器6.86X 系列CPU 结构框图7.8086寄存器组,寻址⽅式8.指令,伪指令9.数据定义,完整程序结构10.汇编语⾔上机及调试过程1.分别指出下列指令中的源操作数和⽬的操作数的寻址⽅式:(1)MOV SI, 200(2)MOV CX, DA TA[SI](3)ADD AX, [BX][DI](4)AND AX, BX(5)PUSHF2.指出指令MOV AX, 2010H 和MOV AX, DS:[2010H]的区别3.写出以下指令中内存操作数的所在地址(1)MOV AL, [BX+5](2)MOV [BP+5], 5(3)INC BYTE PTR[SI+3](4)MOV DL, ES:[BX+DI](5)MOV BX, [BX+SI+2]4.判断下列指令书写是否正确(1)MOV DS, 0100H (错)(2)MOV AL, BX (错)(3)MOV BL, F5H (错)(4)MOV DX, 2000H (对)(5)INC [BX] (对)(6)MOV 5, AL (错)(7)MOV [BX], [SI] (错)5.若SP=2000H, AX=3355H, BX=4466H, 试指出执⾏下列指令后有关寄存器的值:(1)PUSH AX;执⾏后AX=? SP=? (AX=3355H SP=1FFEH)(2)PUSH AXPUSH BXPOP DX;执⾏后AX=? DX=? SP=?(AX=3355H DX=4466H SP=1FFEH)6.假设想从100中减去AL中的内容,⽤SUB 100, AL是否正确?如果不对,应⽤什么⽅法?7.有如下程序,当AL某位为何值时,可将程序转⾄AGIN2语句。
北理(bit)微机原理上机软件实验报告微机原理软件编程实验报告班级:学号:姓名:⼀、实验题⽬1、IDE86集成开发环境的学习和运⽤2、编写程序求出10个数中的最⼤值和最⼩值,并以单步形式观察如何求出最⼤值、最⼩值。
3、求1到100 的累加和,并⽤⼗进制形式将结果显⽰在屏幕上。
要求实现数据显⽰,并返回DOS状态。
4、将存储器中的⼗个字节型⼗六进制有符号数按从⼩到⼤的顺序排序并按⼗六进制显⽰出来。
(56H、0ffH、78H、82H、12H、0、95H、58H、0bcH、34H)⼆、实验⽬的1、学习并掌握IDE86集成开发环境的使⽤包括编辑、编译、链接、调试与运⾏等步骤编辑:源程序的输⼊、修改。
编译:常见编译出现的语法错误的修改。
可执⾏⽂件。
运⾏:运⾏、断点设置、单步运⾏、单步跟踪;观察寄存器、标志寄存器值;观察数据存储器中的数据。
2、完成所有题⽬,提⾼编程能⼒,加深对理论课的理解。
三、实验内容1、⽂字叙述设计思路1.1编写程序求出10个数中的最⼤值和最⼩值由于⼀共有⼗个数,所以求其最⼤数或者最⼩数需要⽐较9次。
从数据段的段⾸开取数,先取两个数进⾏⽐较,⽐较完后取其中的最⼤数或者最⼩数放⼊数据段的第⼆位中。
再取第三位数与第⼆位数⽐较,如此循环,⽐较9次后在数据段最末位的就是我们需要的数。
1.2求1到100 的累加和,并⽤⼗进制形式将结果显⽰在屏幕上求和部分:1~100⼀共有100个数,所以需要做100次加法。
做加法要有两个数,第⼀个数是第i位的数值,第⼆个数是i-1位以及之前所有数的和,所以这两个数必须分别存放在两个寄存器⾥,并且两个数相加之后的所得的值,必须放在存放“和”的寄存器中,另外⼀个寄存器每做完⼀次加法⾃加1。
显⽰部分:我们所求得的最终数值在内存中是以16进制数存放的,但是由于结果只是⼀个数,我们可以把它的每⼀位所对应的ASCII码按照⼀定的顺序存放到⼀个数据段中,再以字符串形式直接输出。
1.3将存储器中的⼗个字节型⼗六进制有符号数按从⼩到⼤的顺序排序并按⼗六进制显⽰出来⽐较部分:题⽬⼀共给了我们10个数,如果要进⾏排序的话可以先把⼗个数中最⼤的数选出来,放到数据段的最后⼀个位置,接着再选出次⼤的数放到数据段的倒数第⼆位,如此循环到最后便可成功将所给的⼗个数排序好。
北京理工大学微机原理与接口技术实验报告实验内容:微机原理综合设计组别:姓名:班级:学号:一、实验目的1.利用所学知识设计简单计算器。
二、实验内容利用8255控制试验箱上的键盘,实现2位十进制数以内的加减乘除运算,将运算结果通过8250发送到上位机。
键盘为10个数字键0-9,六个功能键 +、-、*、/、=、复位。
三、实验方法1.设计思路⑴.根据题目要求首先应该实现试验箱上的键盘扫描功能,计算按下键码的键值(键值检测中应该加入相应的延时程序以达到精确扫描的目的)。
再进行加减乘除算数运算,通过8250芯片发送到上位机,利用串口小助手实现算数。
2.实验程序流程图。
四、实验源程序(必要的文字注释)初始化按键闭合? 开始按键扫描保存键值 进行算数运算按键恢复? 输出结果结束NN Y Y1.简单计算器程序。
ASSUME CS:CODECODE SEGMENTORG 100HSTART: MOV DX,04A6H ;控制寄存器地址MOV AX,90H ;设置为A口输入,;B口输出,C输出OUT DX,AX ;8255初始化MOV AX,0MOV DS,AXAAA: MOV DI,2000HMOV CX,10CCC1: MOV DS:[DI],0INC DILOOP CCC1MOV DI,2000HMOV DX,486HMOV AX,80HOUT DX,AXMOV DX,480HMOV AX,12OUT DX,AXMOV DX,482HMOV AX,0OUT DX,AXMOV DX,486HMOV AX,7OUT DX,AXMOV DX,482HMOV AX,0OUT DX,AXMOV DX,48AHIN AX,DXMOV DX,480HIN AX,DXCHECK0: ;CHECK0检测是否有健被按下MOV AX,OOH ;C口的PC0、PC1、PC2作为行选择线MOV DX,04A4H ;C口地址OUT DX,AX; 写入C口内容00H,即令所有行为低电平MOV DX,04A0H ;A口地址IN AX,DX ;读入A口的内容CMP AL,OFFH ;判定是否有列线为低电平JE CHECK0 ;没有,无闭合键,则循环等待MOV CX,05FFH ;延迟常数,可以修改来改变延时时间DELAY:LOOP DELAY ;有,则延迟清除抖动,当cx=0时则停止该循环行扫描键盘和列扫描键盘,确定被按键的行值和列值MOV CL,3 ;行数MOV AH,0MOV AL,0FBH ; 0fbh=1111 1011BCONTIN: PUSH AL ;将ax的内容(0fbh)入栈保存MOV DX,04A4H ;C口地址OUT DX,AL ;写入C口内容0fbh=1111 1011B,即将第三行置为低电平MOV DX,04A0H ;A口地址IN AL,DX ;读入A口的内容MOV AH,AL ;将A口的内容送入ahCMP GH,0FFH ;判断是否有列线为低电平JNE NEXT ;比较结果不等于0则转移,即有列线为低电平POP AX ; 比较结果等于0,即没有列线为低电平,(ax)=00fbhROR AL,1 ; fbh(1111 1011B)循环右移,(al)=1111 1101检测下一行LOOP CONTIN ;循环扫描下一行,确定行JMP CHECK0 ;若所有行都没有被按下,则返回check0重新检测NEXT: MOV CH,CL ;保存行值至chMOV CL,7 ;列值从0开始编号0-7BEGIN0: SHL AH,1 ; ah为A口的内容,逻辑左移1位,末位补0 JNC GOON ;无进位则转移,即可确定列LOOP BEGIN0 ;继续循环,确定列JMP CHECK0GOON: ;计算显示码在discode中的位置:(行数-1)*8 +列值MOV BL,CL ;保存列值至BLDEC CH ;行数减1MOV CL,3SHL CH,CL ;左移三位即相当于减1之后的行数*8ADD DL,CH ;确定显示码在discode表中的偏移量,即(行数-1)*8+列值MOV BH,0MOV CX,BX ;显示码在discode表中的偏移量送CXDISPLAY: ;显示输出MOV SI, OFFSET DISCODEADD SI,CX ;显示码偏移地址MOV DX,040AH ;C口地址MOV AL,0FHOUT DX,AL ;写入C口内容,使位控(LED1)有效MOV AL,CS:[SI] ; 取被按键的显示字形码送入al MOV DX,04A2H;B口地址OUT DX,AL ; 将显示字形码送B口输出显示NOPNOPCMP AL,3fhJNZ L1MOV AH,0JMP NEXT1L1: ;定义键码子程序L1CMP AL,06hJNZ L2MOV AH,1JMP NEXT1L2: ;定义键码子程序L2CMP AL,5bhJNZ L3MOV AH,2JMP NEXT1L3: ;定义键码子程序L3CMP AL,4fhJNZ L4MOV AH,3JMP NEXT1L4: ;定义键码子程序L4CMP AL,66hJNZ L5MOV AH,4JMP NEXT1L5: ;定义键码子程序L5CMP AL,6dhJNZ L6MOV AH,5JMP NEXT1L6: ;定义键码子程序L6CMP AL,7dhJNZ L7MOV AH,6JMP NEXT1L7:CMP AL,07hJNZ L8MOV AH,7JMP NEXT1L8: ;定义键码子程序L8 CMP AL,7fhJNZ L9JMP NEXT1L9:CMP AL,6fh ;AL与6FH比较JNZ L10 ;若ZF=0则存入L10中MOV AH,9JMP NEXT1L10:CMP AL,77hJNZ L11MOV AH,10JMP NEXT1L11:CMP AL,7chJNZ L12MOV AH,11JMP NEXT1L12:CMP AL,39hJNZ L13MOV AH,12JMP NEXT1L13:CMP AL,5ehJNZ L14MOV AH,13JMP NEXT1L14:CMP AL,79hJNZ L15JMP NEXT1L15:CMP AL,71hJMP AAANEXT1:MOV DS:[DI],AHINC DICMP DI,2004HCALL DELAY1JE ACLTJMP CHECK0ACLT:MOV AX,0MOV DX,0MOV DI,2000H ;将2000H送入DIMOV AL,DS:[DI] ;将DS:[DI]的地址送入AL MOV DL,DS:[DI+2]MOV BL,DS:[DI+1]CMP BL,10JNZ K1ADD AL,DLPUSH AX ;将AX压栈JMP LOOP1 ;转移到LOOP1地址K1:CMP BL,11JNZ K2SUB AL,DLPUSH AXJMP LOOP1K2:CMP BL,12JNZ K3MUL DLPUSH AXJMP LOOP1K3:CMP BL,13JNZ LOOP1DIV DLPUSH AXJMP LOOP1PPP:LOOP1:CALL DELAY1CALL SENDJMP KKKDELAY1: ;延时子程序MOV CX,0FFFFHLLL:LOOP LLLRETSEND:PUSH AXMOV DX,48AHSEND1:IN AX,DXJNZ SEND2JMP SEND1SEND2:POP AXMOV DX,480HOUT DX,ALRETKKK:JMP CHECK0DISCODE DB 3fh,06h,5bh,4fh,66h,6dh,7dh,07h;(0-7);定义各键码DB 7fh,6fh,77h,7ch,39h,5eh,79h,71h ;(8-F)DB 01h,02h,04h,08h,10h,20h,40h,80h;(abcdefgh);显示字形码表CODE ENDS ;代码段结束END START ;程序段结束五.实验结果简单计算器1位十进制实验结果截图。
第一章思考题与习题1.1计算机的发展到目前为止经历了几个时代?每个时代的特点是什么?1.2计算机的特点表现在哪些方面?简述计算机的应用领域。
1.3冯·诺依曼型计算机的结构由哪些部分组成?各部分的功能是什么?分析其中数据信息和控制信息的流向。
1.4计算机中的CPU由哪些部件组成?简述各部分的功能。
1.5微型计算机系统主要由哪些部分组成?各部分的主要功能和特点是什么?1.6微型计算机的分类方法有哪些?1.7 什么是微型计算机的系统总线?定性说明微处理器三大总线的作用。
1.8 微型计算机的总线标准有哪些?怎样合理地加以选择?1.9 简述微型计算机的主要应用方向及其应用特点。
1.10 奔腾系列微处理器有哪些特点?与其它微处理器相比有哪些改进?1.11 解释并区别下列名词术语的含义。
(1)微处理器、微计算机、微计算机系统(2)字节、字、字长、主频、访存空间、基本指令执行时间、指令数(3)硬件和软件(4)RAM和ROM(5)机器语言、汇编语言、高级语言、操作系统、语言处理程序、应用软件(6)CMOS、BIOS、Cache芯片1.12 微型计算机系统软件的主要特点是什么?它包括哪些内容?1.12 定性比较微型计算机的内存储器和外存储器的特点及组成情况。
第二章思考题与习题2.1 简述计算机中“数”和“码”的区别,计算机中常用的数制和码制有哪些?2.2 将下列十进制数分别转化为二进制数、八进制数、十六进制数和压缩BCD数。
(1)125.74 (2)513.85 (3)742.24(4)69.357 (5)158.625 (6)781.6972.3 将下列二进制数分别转化为十进制数、八进制数和十六进制数。
(1)101011.101 (2)110110.1101(3)1001.11001 (4)100111.01012.4 将下列十六进制数分别转化为二进制数、八进制数、十进制数和压缩BCD数。
(1)5A.26 (2)143.B5(3)6AB.24 (4)E2F3.2C2.5 根据ASCII码的表示,查表写出下列字符的ASCII码。
北京理工大学汇编语言实验报告实验五子程序设计实验实验五子程序设计实验(设计性实验)一、实验要求和目的1.熟悉汇编语言程序设计结构;2.熟悉汇编语言子程序设计方法;3.熟悉利用汇编语言子程序参数传递方法;4.熟悉汇编语言字符串处理基本指令的使用方法;5.掌握利用汇编语言实现字符串的输入输出程序设计方法;6.掌握数制转换程序实现方法。
二、软硬件环境1、硬件环境:计算机系统windows;2、软件环境:装有MASM、DEBUG、LINK、等应用程序。
三、实验涉及的主要知识A)子程序知识要点:1、掌握子程序的定义语句;过程名 PROC [near/far]过程体RET过程名 ENDP2.子程序结构形式一个完整的子程序一般应包含下列内容:1. )子程序的说明部分在设计了程序时,要建立子程序的文档说明,使用户能清楚此子程序的功能和调用方法. 说明时,应含如下内容:.子程序名:命名时要名中见意..子程序的功能:说明子程序完成的任务;.子程序入口参数:说明子程序运行所需参数及存放位置;.子程序出口参数:说明子程序运行结果的参数及存放位置;.子程序所占用的寄存器和工作单元;.子程序调用示例;2、)掌握子程序的调用与返回在汇编语言中,子程序的调用用CALL,返回用RET 指令来完成。
.段内调用与返回:调用子程序指令与子程序同在一个段内。
因此只修改IP;.段间调用与返回:调用子程序与子程序分别在不同的段,因此在返回时,需同时修改CS:IP。
3.)子程序的现场保护与恢复保护现场:在子程序设计时,CPU 内部寄存器内容的保护和恢复。
一般利用堆栈实现现场保护和恢复的格式:过程名PROC [NEAR/FAR]PUSH BXPUSH DXPOP DXPOP AXRET过程名 ENDP4.子程序的参数传递方法1.寄存器传递参数这种方式是最基本的参数传递方式。
2.存储器单元传(变量)递参数这种方法是在主程序调用子程序前,将入口参数存放到约定的存储单元中;子程序运行时到约定存储位置读取参数;子程序执行结束后将结果也放在约定存储单元中。
北京理工大学-微机原理综合设计实验-数字电压表A————————————————————————————————作者:————————————————————————————————日期:微机原理与接口技术实验报告实验内容:微机原理综合设计实验数字电压表A组别:31姓名:12届黄大师班级:xxxxxxxxx 学号:xxxxxxxxxx一、实验目的1、掌握8255的使用及编程原理。
2、掌握8253定时/计数器的编程原理。
3、掌握ADC0809的使用方法。
4、掌握共阴极七段数码管的工作原理。
5、加强多芯片的综合运用。
6、加强汇编语言程序设计。
二、实验内容利用ADC0809采集电位器的电压值,将采集的电压值通过8255显示在七段数码管上,显示数据保留小数点后2位,利用8253定时数据更新,每隔0.5秒数据更新一次。
扩展要求:具有设置报警阈值功能,当超过阈值时,点亮一个LED灯。
三、实验方法1、设计思路先利用ADC0809采集电位器的电压值,此时的电压值在AL中,但其真正的值应该为5/255*AL伏。
根据要求保留小数点后2位,利用程序先将AL乘以500/255,约为196,即将电压值扩大100倍,先除以100,得到最高位,再依次除以10,得到小数点后第一,二位,分别存在连续的三个存储单元中。
定义0-9共阴极七段数码管的显示码数据段,再通过8255 依次选通3个数码管,通过8255依次送入刚才所得的三个值的显示码。
利用8253工作在方式二,每隔0.5秒产生一低脉冲送到8255,利用程序检验,每隔0.5秒才调用电压采集程序。
对于扩展要求可利用74LS273实现。
实验简单主要原理图如下:将可变电位器AN0与ADC0809的ADIN0相连,将CS2与ADC0809的片选CS0809端相连,将ADC0809的EOC 与8255的PC0相连,CS0与8253的片选CS8253相连,CLK3(750KHz )与8253CLK0相连,8253的OUT0与8253CLK2相连,OUT2与8255的PA0相连,CS1与8255的片选CS8255相连,PC4-PC6与LED1-LED3依次相连,PB0-PB7依次与LED-A —LED-DP 相连。
微机原理技术与接口实验报告学院:专业:班级:姓名:学号:汇编语言程序的上机过程实验目的通过简单地操作了解汇编语言程序的基本内容,体会汇编语言的运行,为以后的实验打下一定的基础。
实验原理及操作步骤一、上机环境❖要运行调试汇编语言程序,至少需要以下程序文件:▪编辑程序:或其他文本编辑工具软件,用于编辑源程序。
▪汇编程序:MASM.EXE,用于汇编源程序,得到目标程序。
▪连接程序:LINK.EXE,用于连接目标程序,得到可执行程序。
▪调试程序:DEBUG.EXE,用于调试可执行程序。
二、上机过程❖汇编语言程序上机操作包括:编辑、汇编、连接和调试几个阶段。
1.编辑源程序❖用文本编辑软件创建、编辑汇编源程序。
常用编辑工具有:、记事本、Word等。
❖无论采用何种编辑工具,生成的文件必须是纯文本文件,所有字符为半角,且文件扩展名为.asm(文件名不分大小写,由1~8个字符组成)。
2.汇编❖用汇编工具对上述源程序文件(.asm)进行汇编,产生目标文件(.obj)等文件。
❖汇编程序的主要功能是:检查源程序的语法,给出错误信息;产生目标程序文件;展开宏指令。
❖汇编过程如下:❖在DOS状态下,输入命令:MASM MYFILE.ASM(回车),即启动了汇编程序。
❖此命令执行后,会出现下面的3行信息,依次按回车键(即选择默认值)即可建立3个输出文件,其扩展名分别为:.OBJ(目标文件),.LST(列表文件)和.CRF(交叉引用文件)。
Object Filename [MYFILE.OBJ]:Source Listing [Nul.LST]:Cross Reference [Nul.CRF]:依次按回车键,进行选择后,汇编程序就对汇编源程序进行汇编。
如果汇编过程中发现有语法错误,则屏幕上会显示出错语言的位置和出错的类型。
此时,需要进行修改,然后再进行汇编。
❖如此进行,直至汇编无错误,得到目标文件为止。
3.连接❖汇编产生的目标文件(.obj)并不是可执行的程序,还要用连接程序把它转换为可执行的EXE文件。
本科实验报告实验名称:实验二算术运算类操作实验(基础与设计)课程名称:CPU与汇编实验实验时间:任课教师:实验地点:实验教师:实验类型:□原理验证■综合设计□自主创新学生姓名:学号/班级:组号:无学院:信息与电子同组搭档:无专业:信息工程成绩:一、实验要求和目的1.了解汇编语言中的二进制、十六进制、十进制、BCD 码的表示形式;2.掌握各类运算类指令对各状态标志位的影响及测试方法;3.熟悉汇编语言二进制多字节加减法基本指令的使用方法;4.熟悉无符号数和有符号数乘法和除法指令的使用;5.掌握符号位扩展指令的使用;6.掌握BCD 码调整指令的使用方法。
二、软硬件环境1、硬件环境:计算机系统 windows;2、软件环境:装有MASM、DEBUG、LINK、等应用程序。
三、实验涉及的主要知识1.加减法处理指令2.乘除法指令和符号位扩展指令3.BCD 码的调整指令四、实验内容(一)对于两组无符号数,087H 和034H,0C2H 和5FH,试编程求这两组数的和差积商,并考虑计算结果对标志寄存器中状态标志位的影响:1.流程图Array2.程序代码:DA TAS SEGMENTDA TAS ENDSSTACKS SEGMENTSTACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DA TAS,SS:STACKS START:MOV AX,DATASMOV DS,AXMOV AX,0C2HMOV BX,5FHADD AX,BX ;addMOV AX,0C2HMOV BX,5FHSUB AX,BX ;subMOV AX,0C2HMOV BX,5FHMUL BX ;mulMOV AX,0C2HMOV BX,5FHDIV BX ;divMOV AH,4CHINT 21HCODES ENDSEND START(将数据改变得到另一组输出结果)3.实验结果以第一组数的加法为例(已将截图以上输入-t进行debug的步骤省略)此时右下角信息(NV UP……)代表标志寄存器的值。
实验1—两个多位十进制数相加:将两个多位十进制数相加,要求加数均以ASCII码形式各自顺序存放在以DATA1和DATA2为首的5个内存单元中(低位在前),结果送回DATA1处。
一、流程图:开始二、源代码:DATAS SEGMENTDATA1 DB 31H,32H,33H,34H,35HDATA2 DB 35H,36H,37H,38H,31H;此处输入数据段代码DATAS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,DATASMOV DS,AXCALL DISPLAY1MOV AH,02HMOV DL,'+'INT 21HCALL DISPLAY2MOV AH,02HMOV DL,'='INT 21HCALL ADCALL DISPLAY3MOV AH,4CHINT 21HDISPLAY1 PROC;显示加数子程序MOV SI,4;使SI指向D1的最高位MOV CX,5LP1:MOV AL,DATA1[SI]DEC SIMOV DL,ALMOV AH,02HINT 21HLOOP LP1RETDISPLAY1 ENDPDISPLAY2 PROC;显示被加数子程序MOV SI,4MOV CX,5LP2:MOV AL,DATA2[SI]DEC SIMOV DL,ALMOV AH,02HINT 21HLOOP LP2RETDISPLAY2 ENDPAD PROC ;加法子程序MOV SI,0MOV CX,5NEXT: MOV AL,DATA1[SI]SUB AL,30HMOV BL,DATA2[SI]SUB BL,30HADD AL,BLCMP AL,09H;判断低位的进位JLE NOCH;ADD DATA1[SI+1],1MOV AH,0;AH做除法前必须清零,否则余数保存出错,进位有问题MOV BL,10DIV BLXCHG AL,AHNOCH:ADD AL,30HMOV DATA1[SI],ALINC SILOOP NEXTRETAD ENDPDISPLAY3 PROCMOV CX,5MOV SI,4LP3:MOV AL,DATA1[SI]MOV DL,ALMOV AH,02HINT 21HDEC SILOOP LP3RETDISPLAY3 ENDPCODES ENDSEND START三、DEBUG运行结果:第一个加数置入:第二个加数置入:求和输出:。
实验报告二课程微机原理实验名称汇编语言程序上机过程以及调试第页专业电子信息班级__ __ 学号_ __ 姓名实验日期:2014 年 3 月10 日报告退发(订正、重做)一、实验目的学习汇编语言程序设计的基本步骤,即编辑(EDIT)程序、汇编(MASM)、连接(LINK)和运行,使对汇编语言程序设计有一个初步的认识。
二、实验内容1、学习使用全屏幕文本编辑软件EDIT。
用EDIT输入一段给定的源程序。
2、用MASM对已存盘的源程序进行汇编,形成目标文件(.OBJ);如有错误,再返回到EDIT进行修改。
3、用LINK对上述形成的目标文件进行连接,形成可执行文件(.EXE)4、在DOS提示符下运行该可执行文件。
[汇编语言程序的编写格式]汇编语言程序一般由几个段组成,它们分别是堆栈段,数据段,代码段。
任何一个源程序至少必须有一个代码段和一条作为源程序结束的伪指令END。
段的定义有两种格式,分述如下:1,完整的段定义格式:一个段由段头,段体,段尾组成,形式如下:段名SEGMENT[定位类型][组合类型][‘类别’]……段名ENDS其中SEGMENT后的参数一般可省略,详细说明参阅后面的有关章节。
2,简化的段定义格式(MASM5.0版本提供)每段以.开始后跟固定的段名,一般形式如下:DOSSEG.MODEL 存储类型;“存储类型”可选择为SMALL。
.STACK[大小];堆栈段,“大小”指定堆栈的字节数。
.DATA;数据段。
.CODE[名字];代码段;一般只有一个代码段,名字可缺少……例1:用完整的段定义编写一源程序。
NAME EXAM1;可以省略DATA SEGMENT;定义数据段,以下是数据段的内容STR1 DB “HELLO,WELCOME!”,13,10,‘$’STR2 DB “DO YOU LIKE COMPUTER?(Y/N)”,13 10,‘$’STR3 DB “NICE!”,13,10,‘$’STR4 DB “SORRY!”,13,10,‘$’STR5 DB “UNKNOW,ANSWER AGAIN!(Y/N)”,DB 13,10,‘$’STR6 DB “SEE YOU NEXT TIME!”,13,10,‘$’DA TA ENDS ;数据段结束CODE SEGMENT ;定义代码段ASSUME CS:CODE;DS:DATA;以下是代码段内容START:MOV AX,DA TA;给数据段寄存器赋值MOV DS,AXMOV AH,9;显示一字符串的功能号MOV DX,OFFSET STR1;显示字符串STR1的偏址INT 21H;DOS功能调用ASK :MOV DX,OFFFSET STR2;显示字符串STR2INT 21HMOV AH,1;键盘输入一字符的功能号INT 21H;键入的字符ASCⅡ码在ALNOT AL;求反TEST AL,‘Y’;是否按下‘Y’或‘y’键JE NEXT1TEST AL,‘y’JE NEXT1TEST AL,‘N’;是否按下‘N’键或‘y’键JE NEXT2TEST AL, ‘n’JE NEXT2MOV DX,OFFSET STR5;不是按上述键MOV AH,9INT 21HJMP ASK;再返回ASKNEXT1:MOV DX,OFFSET STR3;是按下‘Y’或‘y’键MOV AH,9INT 21HJMP BYENEXT2:MOV DX,OFFSET STR4;是按下‘N’或‘n’键MOV AH,9INT 21HBYE:MOV DX,OFFSET STR6INT 21HMOV DL,7;喇叭响的ASCⅡ码MOV AH,2INT 21HMOV AH,4CH;退回DOSINT 21HCODE ENDS;代码段结束END START;源程序结束注:源程序中的每一行注释语句前一定要加分号‘;’,下同。
微机原理与接口技术硬件实验报告实验一 :8259中断控制器实验一、 实验目的1. 掌握8259的工作原理。
2. 掌握编写中断服务程序的方法 。
3. 掌握初始化中断向量的方法 。
二、 实验内容用单脉冲发生器的输出脉冲为中断源 ,每按一次产生一次中断申请管。
三、 实验设备微机实验教学系统实验箱 、8086CPU 模块班级: 姓名: 学号:,点亮或熄灭发光二极四、连线① 单脉冲发生器输出 P+与8259的IR0相连 ② 8259的片选 CS8259与CSO 相连 ③ 8259的INT 与8086的INT 相连 ④ 8259的INTA 与8086的INTA 相连 ⑤ CS273与CS1相连 ⑥ 00与LED1相连 其它线均已连好如下图:编辑程序,编译链接后,调试程序。
在中断服务程序内的断点处 。
(4)撰写实验报告。
10g7\lID6 5 SjJD? 4IRQ IR1 IR2 IRj IR.4 IR5 IR# IR -IRQ 1K1 1R2 IR3 :P.- IR5 IR6 IK7五、 实验步骤(1) 连线。
IORD 1[O1VR2WADRDWR "SP EN INT INTACASO CAS] CAS2调试通过后,在中断服务程序内设置断点,运行程序,当接收到中断请求后, 程序停7 4LS3 2VccTDO D] D2 D3 EM D5 1>5六、实验源程序CODE SEGMENT PUBLIC ASSUME CS:CODEORG 100H START: MOV DX,4A0HMOV AX,13HOUT DX,AXMOV DX,4A2HMOV AX,80HOUT DX,AXMOV AX,01OUT DX,AXMOV AX,0OUT DX,AX;中断向量存放在MOV AX,0MOV DS,AXMOV SI,200HMOV AX,OFFSET HINTMOV DS:[SI],AXADD SI,2MOV AX,CS 写 ICW1写ICW2;IR0的中断向量码为80H;一般嵌套,非缓冲,非自动EOI ;写OCW1 ;允许中断;中断类型号为80H;中断服务程序的入口地址(0000H : 0200H)开始的四个单元里MOV DS:[SI],AXSTI 开中断,设置IF=1 JMP $ ;原地跳转HINT:XOR CX,0FFHMOV DX,4B0HMOV AX,CXOUT DX,AXMOV DX,4A0HMOV AX,20HOUT DX,AXIRETCODE ENDSEND START七、实验思考题1 .将P+连线连接到IR1 —将P+接到IR1,在原程序的基础上口地址改为0204H即可。
汇编语言实验报告实验三字符串操作实验(设计性实验)班级:05611102姓名:肖枫学号:1120111431实验日期:2013.9.7下午一、实验要求和目的1.了解汇编语言字符串处理基本流程;2.熟悉汇编语言字符串处理基本指令的使用方法;3.掌握利用汇编语言实现字符串处理的程序设计方法。
二、软硬件环境1、硬件环境:计算机系统windows;2、软件环境:装有MASM、DEBUG、LINK、等应用程序。
三、实验涉及的主要知识1、字符串处理基本操作流程(1)利用SI 寄存器保存源串首地址;(2)利用DI 寄存器保存目的串首地址;(3)利用CX 寄存器保存字符串长度;(4)利用CLD 或STD 指令设置字符串处理方向;(5)利用字符串处理指令实现相关处理。
其中,CLD 指令使DF=0,在执行串处理指令时可使地址自动增量;STD 使DF=1,在执行串处理指令时可使地址自动减量。
提示:字符串处理一般都涉及到源串和目的串,汇编语言规定源串在数据段中定义,目的串在附加段中定义。
2、重复前缀指令,重复次数由计数寄存器CX 中存放的值决定,指令每重复执行一次,计数器CX 中值减1,当CX 中值减至0 时,停止重复执行,继续执行下一条指令REP 无条件重复前缀,重复串操作直到计数寄存器的内容CX 为0 为止。
经常与REP配合工作的字符串处理指令有MOVS、STOS 和LODS。
REPE/REPZ 判断计数寄存器的内容CX 是否为0 或ZF=0(即比较的两个操作数不等),只要满足一个则重复执行结束,否则继续执行。
可以与REPE/REPZ 配合工作的串指令有CMPS 和SCAS。
REPNE/REPNZ 判断计数寄存器的内容是否为0 或ZF=1(即比较的两个操作数相等),只要满足一个则重复执行结束,否则继续执行。
可以与REPE/REPZ 配合工作的串指令有CMPS 和SCAS。
3、字符串处理基本指令(1)MOVS 传送指令格式:MOVS DST,SRC 或MOVSB(传送字节)或MOVSW(传送字)。
汇编语言实验报告实验五子程序设计实验(设计性实验)班级:05611102姓名:肖枫学号:1120111431实验日期:2013.9.11晚上实验四子程序设计实验(设计性实验)一、实验要求和目的1.熟悉汇编语言程序设计结构;2.熟悉汇编语言子程序设计方法;3.熟悉利用汇编语言子程序参数传递方法;4.熟悉汇编语言字符串处理基本指令的使用方法;5.掌握利用汇编语言实现字符串的输入输出程序设计方法;6.掌握数制转换程序实现方法。
二、软硬件环境1、硬件环境:计算机系统windows;2、软件环境:装有MASM、DEBUG、LINK、等应用程序。
三、实验涉及的主要知识A)子程序知识要点:1、掌握子程序的定义语句;过程名 PROC [near/far]过程体RET过程名 ENDP2.子程序结构形式一个完整的子程序一般应包含下列内容:1. )子程序的说明部分在设计了程序时,要建立子程序的文档说明,使用户能清楚此子程序的功能和调用方法. 说明时,应含如下内容:.子程序名:命名时要名中见意..子程序的功能:说明子程序完成的任务;.子程序入口参数:说明子程序运行所需参数及存放位置;.子程序出口参数:说明子程序运行结果的参数及存放位置;.子程序所占用的寄存器和工作单元;.子程序调用示例;2、)掌握子程序的调用与返回在汇编语言中,子程序的调用用CALL,返回用RET 指令来完成。
.段内调用与返回:调用子程序指令与子程序同在一个段内。
因此只修改IP;.段间调用与返回:调用子程序与子程序分别在不同的段,因此在返回时,需同时修改CS:IP。
3.)子程序的现场保护与恢复保护现场:在子程序设计时,CPU 内部寄存器内容的保护和恢复。
一般利用堆栈实现现场保护和恢复的格式:过程名PROC [NEAR/FAR]PUSH AXPUSH BX..PUSH DX...POP DX...POP AXRET过程名 ENDP4.子程序的参数传递方法1.寄存器传递参数这种方式是最基本的参数传递方式。
北京理工大学汇编上机试题和代码1. 请任意输入一个字符串,将该串倒序后在屏幕上显示。
DATAS SEGMENTBUF1 DB 0FFHDB ?DB 0FFH DUP(?)BUF2 DB 0DH,0AH,0FDH DUP(?)DATAS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATASSTART:MOV AX,DATASMOV DS,AXLEA DX,BUF1MOV AH,0AHINT 21HMOV AX,0MOV AL,BUF1[1]LEA SI,BUF1[1]ADD SI,AXLEA DI,BUF2[2]MOV CX,0MOV CL,BUF1[1]L:MOV AL,[SI]MOV [DI],ALDEC SIINC DILOOP LMOV BYTE PTR [DI],'$'LEA DX,BUF2MOV AH,09HINT 21HMOV AH,4CHINT 21HCODES ENDSEND START取巧:DATA SEGMENTDB 512 DUP('$') ;定义可输入的字符个数BUF DB '$'DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV BX,OFFSET BUF ;指针指向待显示字符串尾部AGAIN:MOV AH,01 ;输入字符INT 21HCMP AL,0DH ;是回车吗JE DISP ;是,转显示DEC BX ;指针减1MOV [BX],AL ;存入输入的字符JMP AGAIN ;继续输入DISP:MOV DX,BX ;定位待显示字符串首地址MOV AH,09INT 21H ;显示MOV AH,4CH ;DOS返回INT 21HCODE ENDSEND START2. 请任意输入一个字符串,统计其中空格和A的个数,并将结果显示在屏幕上。
实验一请在数据段中定义两个数,要求编写程序分别计算出这两个数的和、差、积、商,并用Debug 的相关命令查询计算结果。
(略)实验二内存自TABLE开始的连续16个单元中存放着0-15的平方值,查表求DATA中任意数X(0≤X ≤15)的平方值,并将结果放在RESULT中。
DATA1 SEGMENTTABLE DB 0,1,4,9,16,25,36,49,64,81,100,121,144,169,196,225DATA DB 10RESULT DB ?DATA1 ENDSSTAC SEGMENTDB 100 DUP (?)STAC ENDSCODE SEGMENTASSUME DS:DATA1,SS:STAC,CS:CODESR:MOV AX,DATA1MOV DS,AXMOV AX,STACMOV SS,AXLEA BX,TABLEMOV AH,0MOV AL,DATAXLATMOV RESULT,ALMOV AH,4CHINT 21HCODE ENDSEND SR实验三试编写一程序:比较两个字符串STRING1 和STRING2所含的字符是否相同。
若相同则显示‘MATCH’,否则显示‘NO MATCH’。
DATA1 SEGMENTSTRING1 DB 10,?,10 DUP (?)STRING2 DB 10,?,10 DUP (?)REM1 DB 'PLEASE INPUT STR1: $'REM2 DB 'PLEASE INPUT STR2: $'MESS1 DB 'MATCH$'MESS2 DB 'NO MATCH$'DATA1 ENDSCODE1 SEGMENTASSUME CS:CODE1,DS:DATA1STT: MOV AX,DATA1MOV DS,AXMOV ES,AX LEA DX,REM1 MOV AH,09H INT 21HLEA DX, STRING1 MOV AH, 0AH INT 21HMOV DL, 0DH MOV AH, 6INT 21HMOV DL, 0AH MOV AH, 6INT 21HLEA DX,REM2 MOV AH,09H INT 21HLEA DX, STRING2 MOV AH, 0AH INT 21HMOV DL,0DH MOV AH,6INT 21HMOV DL,0AHMOV AH,6INT 21HLEA SI, STRING1LEA DI,STRING2MOV CL,[SI+1]MOV BL,[DI+1]CMP CL,BLJNE NOMCLDMOV CH,0ADD CL,2REPZ CMPSBJNZ NOM MAT: LEA DX,MESS1JMP SHORT DISP1 NOM: LEA DX,MESS2DISP1: MOV AH,09HINT 21HMOV AH,4CHINT 21HCODE1 ENDSEND STT实验四设有10个学生的成绩分别为:56,69,84,82,73,88,99,63,100,80分。
试编写程序分别统计低于60分、60-69分、70-79分、80-89分、90-99分及100分的人数,并将各分数段的人数在屏幕上显示出来。
DATA SEGMENTSCORE DB 56,69,84,82,73,88,99,63,100,80NUM_UNDER60 DB 0NUM_60TO69 DB 0NUM_70TO79 DB 0NUM_80TO89 DB 0NUM_90TO99 DB 0NUM_100 DB 0DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXXOR AX,AXMOV CX,10LEA BX,SCORECOMPARE:CMP BYTE PTR [BX],60 JL UNDER60JMP IS60TO69IS60TO69:CMP BYTE PTR [BX],70 JL _60TO69JMP IS70TO79IS70TO79:CMP BYTE PTR [BX],80 JL _70TO79JMP IS80TO89IS80TO89:CMP BYTE PTR [BX],90 JL _80TO89JMP IS90TO99IS90TO99:CMP BYTE PTR [BX],100 JL _90TO99JZ EQUAL100UNDER60:ADD NUM_UNDER60,1 JMP CON_60TO69:ADD NUM_60TO69,1 JMP CON_70TO79:ADD NUM_70TO79,1 JMP CON_80TO89:ADD NUM_80TO89,1 JMP CON_90TO99:ADD NUM_90TO99,1 JMP CONEQUAL100:ADD NUM_100,1 CON:LEA BX,[BX+1]LOOP COMPARELAST:MOV DL,NUM_UNDER60 ADD DL,30HMOV AH,2INT 21HMOV DL,' 'MOV AH,2INT 21HMOV DL,NUM_60TO69 ADD DL,30HMOV AH,2INT 21HMOV DL,' 'MOV AH,2INT 21HMOV DL,NUM_70TO79 ADD DL,30HMOV AH,2INT 21HMOV AH,2INT 21HMOV DL,NUM_80TO89 ADD DL,30HMOV AH,2INT 21HMOV DL,' 'MOV AH,2INT 21HMOV DL,NUM_90TO99 ADD DL,30HMOV AH,2INT 21HMOV DL,' 'MOV AH,2INT 21HMOV DL,NUM_100 ADD DL,30HMOV AH,2INT 21HMOV AH,4CHCODE ENDSEND START实验5设有10个学生的成绩分别为88.75.95.63.98.78.87.73.90.60编写程序分别排出他们的名次,并分别存放在后续的10个单元中DATA SEGMENTSCORE DB 88,75,95,63,98,78,87,73,90,60ORDER DB 10 DUP(?)DISPLAY DB '$'DATA ENDSSTACK SEGMENTDB 100 DUP(?)STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACKSTART:MOV AX,DATAMOV DS,AXMOV ES,AXMOV AX,STACK MOV SS,AXLEA DI,ORDERLEA BX,SCORE MOV DX,10L2:MOV AL,[BX]LEA SI,SCORE MOV CX,10MOV BYTE PTR[DI],1 L1:CMP AL,[SI]JNC TTL:INC BYTE PTR[DI] TT:INC SILOOP L1INC BXINC DIDEC DXMOV CX,10 LEA DX,DISPLAY MOV AH,9INT 21HLEA SI,ORDER L3:MOV AL,[SI] CMP AL,10 JAE TEN MOV DL,[SI] ADD DL,30H MOV AH,2INT 21HJMP DOU TEN:DAAPUSH AX PUSH CX MOV CL,4 SHR AL,CLADD AL,30H MOV DL,AL MOV AH,2 INT 21H POP AX AND AL,0FH ADD AL,30H MOV DL,AL MOV AH,2 INT 21HDOU:INC SICMP CX,1JZ FMOV DL,',' MOV AH,2 INT 21H LOOP L3F:MOV AH,4CHINT 21HCODE ENDSEND START实验六编写程序:要求完成从键盘输入字符,若输入的是数字N,则响铃N次。
如输入不是数字,则不响铃。
DATA SEGMENTNUM DB ?DATA ENDSCODE SEGMENTASSUME DS:DATA,CS:CODESTART: MOV AX,DATAMOV DS,AXMOV AH,1INT 21HXOR CX,CXCMP AL,30HJL L1CMP AL,3AHJGE L1SUB AL,30HMOV CL,ALRING: MOV DL,07HMOV AH,2INT 21HCALL DELAYLOOP RINGDELAY PROCDLAY: PUSH CXMOV BX,0FFFFH LP2: MOV CX,176HLP1: PUSHFPOPFLOOP LP1DEC BXJNZ LP2POP CXRETDELAY ENDPL1: MOV AH,4CHINT 21HCODE ENDSCODE ENDSEND START实验七子程序调用:从键盘输入字符串(包括数字,大写字母,小写字母,标点符号),要求调用子程序将其中的小写字母转换成大写字母,然后将结果输出。
DATA SEGMENTBUF DB 100,?,100 DUP(?)CR DB 13,10,'$'DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXLEA DX,BUFMOV AH,0AHINT 21HMOV DL,0DHMOV AH,6INT 21HMOV DL,0AHMOV AH,6INT 21HXOR BX,BXLEA SI,BUF+2XOR CX,CXMOV CL,BUF+1 L1: MOV DL,[SI]CMP DL,'a'JB NCMP DL,'z'JA NCALL CHANGE N:MOV AH,02HINT 21HINC SILOOP L1JMP LAST CHANGE PROC PUSH CXSUB DL,20HPOP CXRETCHANGE ENDP LAST: LEA DX,CRMOV AH,9INT 21HMOV AH,4CHINT 21H CODE ENDSEND START。