西电微机原理上机作业完整版
微机原理上机试验作业

汇编源程序 MASM ABC.ASM
二.上机步骤
① D:>EDIT ABC.ASM ② D:>MASM ABC.ASM ;
有语法错,回 EDIT下改源程序 ③ D:>LINK ABC.OBJ ;
有汇编错误信息 ? Y N
形成目标程序 ABC.OBJ
连接目标程序 LINK ABC.OBJ
有连接错误信息 ? Y N
另存为……
一.上机环境
汇编语言程序设计上机步 骤与调试方法
用户程序:ABC.exe等
应用软 件 系统软件
硬件
操作系统:DOS系统 编辑器:EDIT.exe 编程序:MASM.exe 连接程序:LINK.exe
调试程序:DEBUG.exe CPU 、存储器(ROM 、RAM) 、I/O 接口、输入、输出设备
编辑源程序 EDIT ABC.ASM
形成可执行程序 ABC.EXE
有错,回在 EDIT下改源程序 ④ D:>ABC
运行结果错,回 EDIT下改源程序 或在 DEBUG 下调试,找原因。 ⑤ D:>DEBUG ABC.exe
装入可执行程序到内存,并执行 D:\>ABC
运行结果正确 ? Y
N 用 DEBUG 调试程序查错 ?
下一程序 N
Y 用 DEBUG 调试可执行程序 找到原因
D:\> DEBUG ABC.EXE
第一步:
三.具体操作步骤举例
点击“运行”
三.具体操作步骤举例
COMMAND
三.具体操作步骤举例
DOS提示符
第二步:
三.具体操作步骤举例
进入EDIT 编辑环境
三.具体操作步骤举例
三.具体操作步骤举例
西安电子科技大学微机原理上机题37题

编写程序实现将缓冲区BUFFER中的100个字按递增排序,并按下列格式顺序显示:数据1 <原序号>数据2 <原序号>数据3 <原序号>················程序如下(效果图):N=100DATAS SEGMENTBUFFER LABEL WORDX=55519REPT 100X=(X+7517)mod 65535DW XENDMNUMBER LABEL BYTEY=0REPT 100Y=Y+1DB YENDMDECIMAL DB 5 DUP(?)M DW 1 DUP(?)DATAS ENDSSTACKS SEGMENTDW 100H DUP(?)TOP LABEL WORDSTACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKS START:MOV AX,DATASMOV DS,AXMOV ES,AXMOV AX,STACKSMOV SS,AXLEA SP,TOPXOR AX,AX ;开始程序LEA SI,BUFFERLEA DI,NUMBERCALL SORTMOV CX,N ;显示程序开始L1:MOV AX,[SI]MOV M,5CALL DISPAXDCALL DISPEMADD SI,2 ;显示数值XOR AX,AXMOV AL,[DI]MOV M,3CALL DISPAXDCALL DISPCRINC DI ;显示序号LOOP L1MOV AH,4CHMOV AL,0INT 21HSORT PROC NEARPUSH SIPUSH DIPUSH AXPUSH BXPUSH CXMOV CX,N;开始冒泡程序DEC CXLP1: ;外循环PUSH SIPUSH DIPUSH CXLP2: ;内循环MOV AX,[SI]CMP AX,[SI+2]JBE NOXCHGXCHG AX,[SI+2]MOV [SI],AXMOV BL,[DI]XCHG BL,[DI+1]MOV [DI],BLNOXCHG:ADD SI,2INC DILOOP LP2POP CXPOP DIPOP SILOOP LP1 ;冒泡结束POP CXPOP BXPOP AXPOP DIPOP SIRETSORT ENDPDISPAXD PROC NEARPUSH AXPUSH BXPUSH CXPUSH DXPUSH DILEA DI,DECIMALCALL TRANS16TO10MOV CX,MMOV BX,CXDEC BXLEA DI,DECIMAL[BX];指向最高位MOV AH,2DISPAXD2:MOV DL,[DI]ADD DL,30HDEC DIINT 21HLOOP DISPAXD2POP DIPOP DXPOP CXPOP BXPOP AXRETDISPAXD ENDPTRANS16TO10 PROC NEARPUSH AXPUSH BXPUSH CXPUSH DXPUSH DIMOV BX,10MOV CX,MTRANS1:XOR DX,DXDIV BXMOV [DI],DLINC DILOOP TRANS1POP DIPOP DXPOP CXPOP BXPOP AXRETTRANS16TO10 ENDPDISPEM PROC NEARPUSH AXPUSH DXMOV AL,20HMOV AH,02MOV DL,ALINT 21H ;显示一位字符POP DXPOP AXRETDISPEM ENDPDISPCR PROC NEARPUSH AXPUSH DXMOV AL,0AHMOV AH,02MOV DL,ALINT 21H ;显示一位字符POP DXPOP AXRETDISPCR ENDPCODES ENDSEND START。
西电微机原理与系统设计上机报告

微机原理与系统设计上机报告学号:*******姓名:**指导老师:**时间:2016年11月西安电子科技大学内容一 Debug程序的使用一、实验目的1. 学习使用DEBUG调试命令。
2. 学习用DEBUG调试简单程序。
3. 通过程序验证码制及其对标志位的影响。
4. 通过调试熟悉和掌握各寄存器的作用与特点。
二、实验内容用DEBUG调试简单程序。
三、实验仪器微机一台四、实验步骤1.由DOS进入DEBUG调试环境。
(1)DEBUG将调试程序装入内存注意:当机器控制权由DOS成功地转移给调试程序后,将显示“-”号,它是DEBUG的状态提示符,表示可以接受调试子命令了。
(2)-R 显示CPU中各寄存器当前初始内容,请记录下列各项:AX=0000 BX=0000 CX=0000 DX=0000 BP=0000 SI=0000 DI=0000 DS=13E0 ES=13E0 SS=13E0 SP=FFEE CS=13E0 IP=0100 FLAG寄存器中的8个标志位状态值是:OF DF IF SF ZF AF PF CFNV UP EI PL NZ NA PO NC DEBUG用符号给出标志寄存器中8个标志位的当前状态,其含义如下表所示。
标志位含义‘1’的对应符号‘0’的对应符号OF溢出OV有NV无DF方向DN递减UP递增IF中断EI允许DI禁止SF符号NG负PL正ZF全零ZR零NZ非零AF辅助进位AC有NA无PF奇偶性PE偶PO奇CF进位CY有NC无2.用DEBUG调试简单程序例1 -A CS:0106MOV AX,1234MOV BX,2345MOV CX,0ADD AX,BXMOV CX,AXINT 20运行程序(注:执行程序时IP应指向要执行的指令,需要修改该寄存器-RIP当前值输入需要值该处为0106,当然也可以在T或G命令中指出程序起始地址)-R 显示各寄存器当前内容及首条指令-T 3 跟踪执行三条赋值传送指令,观察寄存器及标志位-T 2跟踪执行相加及送和数指令,观察寄存器及标志位-G 执行软件中断指令INT 20,机器将显示“程序正常终止”的信息,并显示“-”,表明仍处在DEBUG的调试控制状态下,注意未用T命令,因为我们不想进入到20H中断处理程序中去,P命令也可实现相同操作实验现象记录:观察与记录按照上述要求命令执行后,哪些寄存器和标志位发生了变化。
西电微院大三DSP上机作业(1)

1、利用DFT的矩阵表示式X=D(N)x,并设计条件语句,在N>M时补零,在N<M时截取序
列。
与同序列的FFT相比较,三种情况下DFT运行结果均与FFT一致。
N=M:
N>M:
N<M:
2、(a)求出解析式为:
画出图像:
(b)8-DFT结果:
图像:
(c)16-DFT结果:
图像:
Commentary:时域补零对应频率插值。
(d)128-DFT:
图像:
(e)DTFT与DFT图像对比:
Commentary:可知ω与k存在关系:2pikn/N = ω。
3、(a)线性卷积结果:
Stem图:
(b)循环卷积结果:
(c)可以看出结果与b题一致
有一个取样结果与a题线性卷积结果一致
(d)由结果可知:添一个零时,三个取样结果与线性卷积一致;
添两个零时,五个取样结果与线性卷积一致;
添三个零时,循环卷积结果与线性卷积完全一致。
(e)给x序列补三个零,给y序列补五个零,做循环卷积,结果如下:
设序列x长度为N,序列y长度为M,可知x序列需补零M-1,y序列需补零N-1,编写函数e2,可对任意序列补零求循环卷积使其结果与线性卷积一致,运行结果如下:
4、(a)运行结果:可见有两个明显的频率分量。
(b)分别做25点,36点,72点DFT变换,可见补零越多,可见的频率分量也越多。
做36点DFT变换时,有四个显著的频率分量。
运行结果如下图所示:。
西电机电院微机原理上机答案

西电机电院微机原理上机答案汇编语⾔上机题姓名:学号:成绩:实验⼀、上机过程及DEBUG应⽤编写程序,建⽴数据段DA TA,将你的姓名(汉语拼⾳)及学号存⼊DATA数据段的BUFFER1区域,然后利⽤程序将BUFFER1区域中的字符串(姓名及学号)依次传送到从BUFFER2开始的内存区域中去。
上机过程与要求1.建⽴原程序:源程序⽂件名为buffer.asm ,源程序清单如下:data segmentbuffer1 db 'hepan04105038'buffer2 db 13 dup(?)data endscode segmentASSUME CS:CODE,DS:DA TASTART:mov ax,datamov ds,axmov es,axlea si,buffer1lea di,buffer2mov cx,0dcldrep movsbmov ah,4chint 21hcode endsend start2.汇编后⽣成的obj⽂件名为buffer .OBJ3.连接后⽣成的⽬标⽂件名为buffer .EXE4.DEBUG调试:在DEBUG下,利⽤U、D、G、R等命令对EXE⽂件进⾏调试后,相关信息如下:(1)表1-1 反汇编清单中所反映的相关信息段地址偏移地址机器码助记符最后⼀条指令14B4 001E D1E3 SHL BX,1*注:最后⼀条指令是对应于代码段中最后⼀条指令(2)在未执⾏程序之前,⽤D命令显⽰内存区域BUFFER1及BUFFER2中的内容,其相关信息如表1-2所⽰。
表1-2 未执⾏程序之前的数据区内容变量区段地址值偏移地址变量值(或字符串)BUFFER1 14B2 0000 hepan04105038BUFFER2 14B2 000D ………….(3)执⾏程序以后⽤D命令显⽰内存区域的相关信息,如表1-3。
表1-3 执⾏程序之后的数据区内容变量区段地址值偏移地址变量值(字符串)BUFFER1 14B2 0000 hepan04105038BUFFER2 14B2 000D hepan04105038(4)⽤R命令检查寄存器的内容如表1-4所⽰。
西安电子科技大学微机原理大作业

西安电子科技大学微机原理大作业第一次上机一、实验目的1. 熟练掌握8086/8088的各种寻址方式及应用。
2.掌握DEBUG调试程序中的一些常用命令的使用方法,为以后的实验打下基础二、实验仪器586微机 1台三、实验内容1.关于数据的寻址方式练习8086/8088 提供多种方式实现操作数寻址,大体可分为7种:a. 立即寻址b. 寄存器寻址c. 直接寻址d. 寄存器间接寻址e. 寄存器相对寻址f. 基址变址寻址g. 基址变址且相对寻址掌握8086/8088的这些寻址方式,是学习汇编语言编程的关键。
指令SRC 寻址方式SRC的地址AX 推算值AX 实际值MOV AX, CX寄存器寻址0005 0005 MOV AX, 500H 立即寻址0500 0500 MOV AX, TABLE 直接寻址1541:0004 A5A 4 A5A 4MOV AX, ES:[BX] 寄存器间接寻址 1542:0004 C5C 4 C5C4MOV AX, [BX+05H] 寄存器相对寻址 1541:0009 AAA 9 AAA 9 MOV AX,寄存器相153FB8B B8B7 MOV AX, TABLE [BX] 寄存器相对寻址 1541:0008 A9A 8 A9A8MOV AX, 07H [BX] 寄存器相对寻址 1541:000B ACA B ACA BMOV AX, [BP]寄存器间接寻址 153F :0003 B4B 3 B4B 3 MOV AX, TABLE [BP] 寄存器相对寻址 1541:0007 A8A 7 A8A 7 MOV AX, 08H [BP] 寄存器相对寻址 153F :000B BCB B BCB B MOV AX, [BP+06H] 寄存器相对寻址 153F :0009 BAB 9 BAB 9 MOV AX,寄存器相1541A7A A7A6MOV AX, [BP]+05H 寄存器相对寻址153F:0008B9B8B9B8MOV AX, ES: [SI+03H] 寄存器相对寻址1542:0005C6C5C6C5MOV AX, [DI+06H] 寄存器相对寻址1541:0007A8A7A8A7MOV AX, [DI]+05H 寄存器相对寻址1541:0006A7A6A7A6MOV AX, TABLE [SI] 寄存器相对寻址1541:0006A7A6A7A6MOV AX, [SI] 寄存器间接寻址1541:0002A3A2A3A2MOV AX, TABLE 寄存器相1541A6A A6A[DI] 对寻址:00055 5MOV AX, [SI]+05H 寄存器相对寻址1541:0007A8A7A8A7MOV AX, [BX] [DI+01H] 基址变址且相对寻址1541:0006A7A6A7A6MOV AX, [BX] [SI]+03H 基址变址且相对寻址1541:0009AAA9AAA9MOV AX, TABLE [BX] [SI] 基址变址且相对寻址1541:000AABAAABAAMOV AX, ES:[BX] [DI] 基址变址寻址1542:0005C6C5C6C5MOV AX, [BP] [DI+02H] 基址变址且相对寻址153F:0006B7B6B7B6MOV AX, TABLE 基址变址1541A9A A9A[BP] [DI] 且相对寻址:00088 8MOV AX, ES:[BP] [SI] 基址变址寻址1542:0005C6C5C6C5MOV AX, [BP] [SI+05H] 基址变址且相对寻址153F:000ABBBABBBAMOV AX, 03H [BP] [DI] 基址变址且相对寻址153F:0007B8B7B8B7MOV AX, [BP] [SI] 基址变址寻址153F:0005B6B5B6B5MOV AX, [BP+02H] [DI+03H] 基址变址且相对寻址153F:0009BAB9BAB9MOV AX, TABLE [BP+02H][DI+03H] 基址变址且相对寻址1541:000DAEADAEAD第二次上机一、实验目的1. 熟练掌握汇编语言程序设计的方法及上机步骤。
西安电子科技大学微机原理上机要求及必做题目答案(汇编实现)

西安电子科技大学微机原理上机必做题目及汇编程序答案1、编写求十进制数12678532与21736543之和的程序,并将和以十进制数的形式送屏幕显示。
编程要求与提示:[1]两个加数均以压缩(组合)十进制数形式存放在ADD1和ADD2为首址的存贮器单元。
[2]和以压缩十进制数的形式存入SUM以下单元。
[3]将和送到屏幕显示部分功能的实现采用子程序的形式。
汇编语言实现如下:STACK SEGMENT STACKDB10H DUP(00)STACK ENDSDATA SEGMENTADD1DB12H,67H,85H,32HADD2DB21H,73H,65H,43HSUM DB4H DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACKSTART:MOV AX,DATAMOV DS,AXMOV AX,DATAMOV ES,AXMOV AX,STACKMOV SS,AXLEA SI,ADD1[3]LEA BX,ADD2[3]LEA DI,SUM[3]MOV CX,4CLCL1:MOV AL,[SI]ADC AL,[BX]DAAMOV[DI],ALDEC SIDEC BXDEC DILOOP L1CALL DISPAL;-------------------------------------EXITPROC:MOV AH,4CH;结束程序MOV AH,1INT21H;-------------------------------------DISPAL PROC NEARPUSH AXPUSH BXPUSH CXPUSH DXPUSH DILEA DI,SUMMOV CX,4DISPAL2:MOV AL,[DI]SHR AL,1SHR AL,1SHR AL,1SHR AL,1MOV AH,2MOV DL,ALADD DL,30HINT21HMOV AL,[DI]AND AL,0FHMOV AH,2MOV DL,ALADD DL,30HINT21HINC DILOOP DISPAL2POP DIPOP DXPOP CXPOP BXPOP AXRETDISPAL ENDPCODE ENDSEND START2、有一个首地址为A的N字数组,请编程序使该数组中的数按从大到小的次序排列。
西电微机原理上机作业完整版

上机作业(一)指令SRC寻址方式SRC的地址AX推算值AX实际值MOV AX, CX 寄存器寻址0005 0005 MOV AX, 500H 立即寻址0500 0500 MOV AX, TABLE 直接寻址1541:0004 A5A4 A5A4 MOV AX, ES:[BX] 寄存器间接寻址1542:0004 C5C4 C5C4 MOV AX, [BX+05H] 寄存器相对寻址1541:0009 AAA9 AAA9 MOV AX, SS:[BX]+03H 寄存器相对寻址153F:0007 B8B7 B8B7 MOV AX, TABLE [BX] 寄存器相对寻址1541:0008 A9A8 A9A8 MOV AX, 07H [BX] 寄存器相对寻址1541:000B ACAB ACAB MOV AX, [BP] 寄存器间接寻址153F:0003 B4B3 B4B3 MOV AX, TABLE [BP] 寄存器相对寻址1541:0007 A8A7 A8A7 MOV AX, 08H [BP] 寄存器相对寻址153F:000B BCBB BCBB MOV AX, [BP+06H] 寄存器相对寻址153F:0009 BAB9 BAB9 MOV AX, DS:[BP+03H] 寄存器相对寻址1541:0006 A7A6 A7A6 MOV AX, [BP]+05H 寄存器相对寻址153F:0008 B9B8 B9B8 MOV AX, ES: [SI+03H] 寄存器相对寻址1542:0005 C6C5 C6C5 MOV AX, [DI+06H] 寄存器相对寻址1541:0007 A8A7 A8A7 MOV AX, [DI]+05H 寄存器相对寻址1541:0006 A7A6 A7A6MOV AX, TABLE [SI] 寄存器相对寻址1541:0006 A7A6 A7A6MOV AX, [SI] 寄存器间接寻址1541:0002 A3A2 A3A2 MOV AX, TABLE [DI] 寄存器相对寻址1541:0005 A6A5 A6A5 MOV AX, [SI]+05H 寄存器相对寻址1541:0007 A8A7 A8A7 MOV AX, [BX] [DI+01H] 基址变址且相对寻址1541:0006 A7A6 A7A6 MOV AX, [BX] [SI]+03H 基址变址且相对寻址1541:0009 AAA9 AAA9 MOV AX, TABLE [BX] [SI] 基址变址且相对寻址1541:000A ABAA ABAA MOV AX, ES:[BX] [DI] 基址变址寻址1542:0005 C6C5 C6C5 MOV AX, [BP] [DI+02H] 基址变址且相对寻址153F:0006 B7B6 B7B6 MOV AX, TABLE [BP] [DI] 基址变址且相对寻址1541:0008 A9A8 A9A8 MOV AX, ES:[BP] [SI] 基址变址寻址1542:0005 C6C5 C6C5 MOV AX, [BP] [SI+05H] 基址变址且相对寻址153F:000A BBBA BBBA MOV AX, 03H [BP] [DI] 基址变址且相对寻址153F:0007 B8B7 B8B7 MOV AX, [BP] [SI] 基址变址寻址153F:0005 B6B5 B6B5 MOV AX, [BP+02H] [DI+03H] 基址变址且相对寻址153F:0009 BAB9 BAB9MOV AX, TABLE [BP+02H][DI+03H]基址变址且相对寻址1541:000D AEAD AEAD1.编写求十进制数12678532与21736543之和的程序,并将和以十进制数的形式送屏幕显示。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SUM DD ?DATA ENDS ;数据段CODE SEGMENT ;代码段ASSUMECS:CODE,DS:DATA,SS:STAC KSTART: MOVAX,DATAMOV DS,AXMOV AX,STACKMOV SS,AXLEA SP,TOPLEA SI,ADD1LEA DI,ADD2MOV AL,[SI]ADD AL,[DI]DAAMOV BYTE PTR SUM,ALMOV AL,[SI+1]ADC AL,[DI+1]DAAMOV BYTE PTR SUM+1,ALMOV AL,[SI+2]ADC AL,[DI+2]DAAMOV BYTE PTR SUM+2,ALMOV AL,[SI+3]ADC AL,[DI+3]DAAMOV BYTE PTR SUM+3,ALMOVAX,WORD PTR SUM+2CALL DISPAXMOV AX,WORD PTR SUMCALL DISPAXMOV AH,4CHINT 21H DISPAL PROC NEAR PUSH AXPUSH CXPUSH DXPUSH AXMOV CL,4SHR AL,CLCALL CHANGMOV AH,02MOV DL,ALINT 21HPOP AXAND AL,0FHCALL CHANGMOV AH,02MOV DL,ALINT 21HPOP DXPOP CXPOP AXRETDISPAL ENDPCHANG PROC NEARCMP AL,10JNGE CHANG1ADD AL,7CHANG1: ADDAL,30HRETCHANG ENDPDISPAX PROC NEARXCHG AL,AHCALL DISPALXCHG AH,ALCALL DISPALRETDISPAX ENDPCODE ENDSEND START2. 有一个首地址为A的N字数组,请编程序使该数组中的数按从大到小的次序排列。
STACK SEGMENT STACKDB 256 DUP(?)STACK ENDSDATA SEGMENTDATA1 DW7800H,6832H,0000H,87H,1275 H,0EC34HSTRING1 DB 'input number:',0DH,0AH,'$'STRING2 DB 'The numbersfrom large to smallis:',0DH,0AH,'$'DATA ENDSCODE SEGMENTASSUMECS:CODE,DS:DATA,ES:DATA, SS:STACKSTART: MOV AX,DATAMOV DS,AXMOV ES,AXMOV AX,STACKMOV SS,AXLEA DX,STRING1MOV AH,09HINT 21HMOV CX,6 LEA SI,DATA1 L1: MOV AX,[SI] ADD SI,2CALL DISPAX CALL DISPCR LOOP L1MOV CX,5LEA SI,DATA1 ADD SI,10LP1: PUSH CXPUSH SILP2: MOV AX,[SI] CMP AX,[SI-2] JBE NOXCHG XCHG AX,[SI-2] MOV [SI],AXNOXCHG: DEC SIDEC SILOOP LP2POP SIPOP CXLOOP LP1LEA DX,STRING2 MOV AH,09HINT 21HMOV CX,6LEA SI,DATA1L2: MOV AX,[SI]ADD SI,2CALL DISPAXCALL DISPCRLOOP L2 MOV AH,4CH INT 21H DISPAL PROCPUSH AXPUSH CXPUSH DXPUSH AXMOV CL,4SHR AL,CLCALL CHANG MOV AH,02H MOV DL,AL INT 21HPOP AXAND AX,0FH CALL CHANGMOV AH,02HMOV DL,ALINT 21HPOP DXPOP CXPOP AXRETDISPAL ENDP CHANG PROCCMP AL,10JNGE CHANG1ADD AL,7 CHANG1: ADD AL,30H RETCHANG ENDP DISPAX PROC XCHG AL,AH CALL DISPAL XCHG AH,AL CALL DISPAL RET DISPAX ENDP DISPCR PROCPUSH AXPUSH DXMOV AH,2MOV DL,0AH INT 21HMOV AH,2MOV DL,0DH INT 21HPOP DXPOP AX RET DISPCR ENDPCODE ENDSEND START3.编写如下程序,并在机器上调试成功。
程序采用菜单式选择,可以接收用户从键盘输入的四个命令(1-4),各命令功能分别为:(1)按下“1”键,完成字符串小写字母变成大写字母。
(2)按下“2”键,完成找最大值(3)按下“3”键,完成排序(4)按下“4”键,结束程序运行,返回系统提示符。
DISPL MACRO STRPUSH DXPUSH AXLEA DX,STRMOV AH,09HINT 21HPOP AXPOP DXENDMISCONTINUE MACRO L DISPS 15,10,SMENU MOV AH,08HINT 21HCMP AL,1BHJNE LJMP MAINENDMCURSOR MACRO CURX,CURY PUSH AXPUSH BXPUSH DXMOV AH,02HMOV DH,CURXMOV DL,CURYMOV BH,0INT 10HPOP DXPOP BXPOP AXENDMDISPS MACRO X,Y,STRPUSH AXPUSH DXMOV AH,02HMOV BH,00HMOV DH,XMOV DL,YINT 10HLEA DX,STRMOV AH,09HINT 21HPOP DXPOP BXPOP AXENDMSCROLL MACRO N,ULR,ULC,LRR,LRC,ATT PUSH AXPUSH CXPUSH DXMOV AH,06H MOV AL,NMOV CH,ULR MOV CL,ULC MOV DH,LRR MOV DL,LRC MOV BH,ATT INT 10HPOP DXPOP CXPOP BXPOP AX ENDMPREP MACRO TLEA SI,INBUF+1LEA DI,OUTBUFSCROLL 21,2,0,22,79,0FHDISPS 3,20,TDISPS 6,2,CAPIONDISPS 8,2,INCAPMOV AH,0AHINT 21HMOV CH,0MOV CL,[SI]INC SIENDMSTACK SEGMENT STACK 'STACK' DB 100H DUP(?)TOP LABEL WORDSTACK ENDSDATA SEGMENTBASE DW MAIN,LTC,FMV,SORTS,EXITWELCM DB 'Welcome to this program!$'MMENUC DB 'Please input the number!$'MMENU1 DB ' 1 -Lowercase Letters To Capital Letters$'MMENU2 DB ' 2 -Find The Maximum figure$'MMENU3 DB ' 3 -Sort$'MMENU4 DB ' 4 -Exit!$'SMENU DB 'Press Any Key To restart,Press "ESC" To Return To Main Menu!$'WROCAP DB 'WRONG! You have press " " key! Please input a number between 1 and 4!$'CAPION DB 'Please Input Your Strings and End With "Enter" Key!$'INCAP DB 'Your Input Is: $'INBUF DB 100DB ?DB 100 DUP(?)OUTCAP DB ' My Output Is: $'OUTBUF DB 100 DUP(?)MAXCAP DB 'The char of max ASCII is: .$'ERRINF DB 'ERROR! Please check the format you input!$' TDINV DB ' Invalid time data! Input again!$'NODATCAP DB ' You have input nothing!$'TIME DB 8 DUP (':'),12 DUP (' ')DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK START: MOV AX,DATAMOV DS,AXMOV ES,AXMOV AX,STACKMOV SS,AXLEA SP,TOPLEA DX,INBUFCLCMAIN: SCROLL 0,0,0,24,79,0 SCROLL 25,0,0,24,79,50HSCROLL 21,2,0,22,79,0FHDISPS 8,20,MMENUCDISPS 10,20,MMENU1DISPS 12,20,MMENU2DISPS 14,20,MMENU3DISPS 16,20,MMENU4 ML: CURSOR 19,1DHMOV AH,01HINT 21HCMP AL,31HJL ERRORCMP AL,35HJG ERRORAND AX,00FHLEA BX,BASESHL AL,1ADD BX,AXJMP WORD PTR [BX] ; CMP AL,'1'; JE LTC; CMP AL,'2'; JE FMV; CMP AL,'3'; JE SORTS; CMP AL,'4'; JE EXITERROR: CMP AL,0DHJE MCRMOV [WROCAP+23],AL ;Other charMOV [WROCAP+24],' 'JMP DMCR: MOV WORD PTR [WROCAP+23],'RC'D: DISPS 20,5,WROCAP ;Show the wrong information JMP MLLTC: CALL LLTOCLISCONTINUE LTCFMV: CALL FMAXVISCONTINUE FMVSORTS: CALL SORTISCONTINUE SORTSEXIT: SCROLL 0,0,0,24,79,0MOV AH,4CHINT 21H LLTOCL PROC REFLASHL:PREP MMENU1CMP CL,0JE REFLASHLLL1: MOV AL,[SI]CMP AL,'a'JB MTOB ;NO CHANGE CMP AL,'z'JA MTOBSUB AL,20H ;Convert MTOB: MOV [DI],ALINC SIINC DILOOP LL1MOV BYTE PTR [DI],'$' DISPS 10,2,OUTCAPDISPS 10,17,OUTBUF RETLLTOCL ENDPFMAXV PROCPUSH BX REFLASHF:PREP MMENU2 CMP CL,0JE REFLASHFMOV AL,0FL1: CMP AL,[SI]JA NEXTMOV AL,[SI]NEXT: INC SILOOP FL1MOV [MAXCAP+26],AL DISPS 10,2,MAXCAPPOP BXRETFMAXV ENDPSORT PROCPREP MMENU3DEC CXADD SI,CXMOV BYTE PTR [SI+1],'$' LP1: PUSH CXPUSH SILP2:MOV AL,[SI]CMP AL,[SI-1]JBE NOXCHGXCHG AL,[SI-1]MOV [SI],AL NOXCHG: DEC SILOOP LP2POP SIPOP CXLOOP LP1DISPS 10,2,OUTCAP DISPS 10,17,INBUF[2] RETSORT ENDP BCDASC PROC NEAR PUSH BXCBWMOV BL,10DIV BLADD AL,30HMOV TIME[SI],AL INC SIADD AH,30HMOV TIME[SI],AH INC SIPOP BXRETBCDASC ENDP CODE ENDSEND START按下4键。