版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGEPAGE228086/8088指令系统与寻址方式习题38086系统中,设DS=1000H,ES=2021H,SS=1200H,BX=0300H,SI=0200H,BP=0100H,VAR的偏移量为0600H,请指出下列指令的目标操作数的寻址方式,若目标操作数为存储器操作数,计算它们的物理地址。(1)MOVBX,12;目标操作数为寄存器寻址(2)MOV[BX],12;目标操作数为寄存器间址PA=10300H(3)MOVES:[SI],AX;目标操作数为寄存器间址PA=20210H(4)MOVVAR,8;目标操作数为存储器直接寻址PA=10600H(5)MOV[BX][SI],AX;目标操作数为基址加变址寻址PA=10500H(6)MOV6[BP][SI],AL;目标操作数为相对的基址加变址寻址PA=12306H(7)MOV[1000H],DX;目标操作数为存储器直接寻址PA=11000H(8)MOV6[BX],CX;目标操作数为寄存器相对寻址PA=10306H(9)MOVVAR+5,AX;目标操作数为存储器直接寻址PA=10605H3.4下面这些指令中哪些是正确的?那些是错误的?如果是错误的,请说明原因。(1)XCHGCS,AX;错,CS不能参与交换(2)MOV[BX],[1000];错,存储器之不能交换(3)XCHGBX,IP;错,IP不能参与交换(4)PUSHCS(5)POPCS;错,不能将数据弹到CS中(6)INBX,DX;输入/输出只能通过AL/AX(7)MOVBYTE[BX],1000;1000大于255,不能装入字节单元(8)MOVCS,[1000];CS不能作为目标寄存器(9)MOVBX,OFFSETVAR[SI];OFFSET只能取变量的偏移地址(10)MOVAX,[SI][DI];SI、DI不能成为基址加变址(11)MOVCOUNT[BX][SI],ES:AX;AX是寄存器,不能加段前缀3.7设当前SS=2021H,SP=FE00H,BX=3457H,计算当前栈顶的地址为多少?当执行PUSHBX指令后,栈顶地址和栈顶2个字节的内容分别是什么?当前栈顶的地址=2FF00H当执行PUSHBX指令后,栈顶地址=2FEFEH(2FEFEH)=57H(2FEFFH)=34H3.8设DX=78C5H,CL=5,CF=1,确定下列各条指令执行后,DX和CF中的值。(1)SHRDX,1;DX=3C62HCF=1(2)SARDX,CL;DX=03C6HCF=0(3)SHLDX,CL;DX=18A0HCF=1(4)RORDX,CL;DX=2BC6HCF=0(5)RCLDX,CL;DX=18B7HCF=1(6)RCRDH,1;DX=BCC5HCF=0;3.9设AX=0A69H,VALUE字变量中存放的内容为1927H,写出下列各条指令执行后寄存器和CF、ZF、OF、SF、PF的值。AXCFZFOFSFPF(1)XORAX,VALUE;134EH00001(2)ANDAX,VALUE;0821H00001(3)SUBAX,VALUE;F142H10011(4)CMPAX,VALUE;0A69H10011(5)NOTAX;F596HXXXXX(6)TESTAX,VALUE;0A69H000013.10设AX和BX中是符号数,CX和DX是无符号数,请分别为下列各项确定CMP和条件转移指令。CX值超过DX转移。AX未超过BX转移。DX为0转移。CX值等于小于DX转移。(1)CMPCX,DXJANEXT(2)CMPAX,BXJLENEXT(3)CMPDX,0JZNEXT(4)CMPCX,DXJBENEXT阅读分析下列指令序列:ADDAX,BXJNOL1JNCL2SUBAX,BXJNCL3JNOL4JMPL5若AX和BX的初值分别为以下5种情况,则执行该指令序列后,程序将分别转向何处(L1~L5中的一个)。AX=13C6H,BX=80DCHAX=0B568H,BX=54B7HAX=42C8H,BX=608DHAX=0D023H,BX=9FD0HAX=9FD0H,BX=0D023H转L1转L1转L2转L5转L5汇编语言程序设计习题4.5画出下列语句中的数据在存储器中的存储情况。VARB DB 34,34H,‘GOOD’,2DUP(1,2DUP(0))VARW DW5678H,‘CD’,$+2,2DUP(100)VARC EQU1222H34H‘G’‘O’‘O’‘D’10010078H56H‘D’‘C’12H00H64H0064HVARBVARW4.6按下列要求,写出各数据定义语句。DB1为10H个重复的字节数据序列:1,2,5个3,4。DB2为字符串‘STUDENTS’DB3为十六进制数序列:12H,ABCDH用等值语句给符号COUNT赋以DB1数据区所占字节数,该语句写在最后。DB1 DB 16DUP(1,2,5DUP(3,4))DB2 DB ‘STUDENTS’DB3 DW12H,0ABCDHCOUNTEQUDB2-DB14.8对于下面的数据定义,各条MOV指令单独执行后,有关寄存器的内容是什么?PREP DB ?TABA DW5DUP(?)TABB DB‘NEXT’TABC DD12345678H(1)MOV AX,TYPEPREP;AX=1(2)MOV AX,TYPETABA;AX=2(3)MOV AX,LENGTHTABA;AX=5(4)MOV AX,SIZETABA;AX=10(5)MOV AX,LENGTHTABB;AX=1(6)MOV DX,SIZETABC;AX=44.10若自STRING单元开始存放有一个字符串(以字符‘$’结束);编程统计该字符串长度(不包含$字符,并假设长度为两字节)。把字符串长度放在STRING单元,把整个字符串往下移两个单元。程序段为:(1) MOV SI,OFFSETSTRING XOR BX,BXCONT:MOV AL,[SI] CMP AL,‘$’ JZ NEXT INC BX INC SI JMP CONTNEXT:MOV AH,4CH INT 21H(2) STRINGDB‘………….$’COUNTEQU$-STRING: MOVSI,OFFSETSTRINGMOVCX,COUNTADDSI,CXCONT:DECSIMOVAL,[SI]MOV[SI+2],AL]LOOPCONTMOVCX,COUNT MOV STRING,CX MOV AH,4CH INT 21H4.11将字符串STRING中的‘&’字符用空格代替,字符串STRING“ThedataisFEB&03” 程序为:DATA SEGMENTSTRING DB ‘ThedataisFEB&03COUNT EQU $-STRINGDATA ENDSCODE SEGMENT ASSUMECS:CODE,DS:DATASTART: MOVAX,DATA MOVDS,AX MOV SI,OFFSETSTRING MOV CX,COUNT MOV AL,‘$’CONT: CMPAL,[SI] JNZ NEXT MOV BYTEPTR[SI],‘’NEXT: INC SI LOOPCONT MOV AH,4CH INT 21HCODE ENDS END START4.16键盘输入十个学生的成绩,试编制一个程序统计69~69分,70~79分,80~89分,90~99分及100分的人数,分别存放到S6,S7,S8,S9及S10单元中。 程序为: DATA SEGMENT BUF DB 10DUP(?) S6 DB ? S7 DB ? S8 DB ? S9 DB ? S10 DB ? DATA ENDS CODE SEGMENT ASSUMECS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV SI,OFFSETS6 XOR AL,AL MOV CX,0504H CONT: MOV [SI],AL INC SI LOOP CONT MOV CX,10 MOV SI,OFFSETBUF CONT1: MOV AH,1 INT 21H SHL AL,CL MOV BL,AL MOV AH,1 INT 21H SUB AL,30H OR AL,BL MOV [SI],AL CMP AL,70H JAE NEXT1 INC BYTEPTRS6 NEXT1: CMP AL,80H JAE NEXT2 INC BYTEPTRS7 NEXT2: CMP AL,90H JAE NEXT3 INC BYTEPTRS8 NEXT3: CMP AL,99H JA NEXT4 INC BYTEPTRS9 JMP NEXT5 NEXT4; INC BYTEPTRS10 NEXT5: INC SI LOOP CONT1 MOV AH,4CH INT 21H CODE ENDS END START第7章基本输入/输出接口习题7.4现有一输入设备,其数据端口地址为FFE0H,状态端口地址为FFE2H,当其D0为1时表明输入数据准备好。试采用查询方式,编程实现从该设备读取100个字节数据并保存到2021H:2021H开始的内存中。 程序段为:MOV AX,2021HMOV DS,AXMOVSI,2021HMOV CX,100 CONT: MOV DX,0FFE2H CONT1:IN AL,DX TEST AL,01 JZ CONT1 MOV DX,0FFE0H IN AL,DX MOV [SI],AL INC SI LOOP CONT MOV AH,4CH INT 21H7.5硬件如图7.5所示,试编程实现:S0控制8个发光二极管1亮7暗,S1控制8个8个发光二极管7亮1暗,S2控制某一亮点(或暗点)以一定时间间隔循环向左移动,S3控制某一亮点(或暗点)以一定时间间隔循环向右移动,两个或两个以上开关闭合,则结束程序。 程序段为:(省略伪指令)BUF1 DB 01HBUF2 DB 80H … MOV DX,200HAGAIN: IN AL,DX XORBL,BL MOV CX,8CONT: ROR AL,1 JNC NEXT INC BLNEXT:LOOP CONT CMP BL,2 JAE EXITCMPAL,0FEH JZ 1L CMP AL,0FD JZ 1A CMP AL,0FBH JZ ZSHL CMP AL,0F7H JZ YSHR1L7A OUT DX,AL JMP AGAIN7A7L:MOV AL, OUT DX,AL JMP AGAINZSHL:MOV AL,BUF1 ROL AL,1 MOV BUF1,AL OUT DX,AL CALL D500MS JMP AGAINYSHR:MOV AL,BUF2 ROR AL,1 MOV BUF1,AL OUT DX,AL CALL D500MS JMP AGAINEXIT:MOV AH,4CH INT 21H第8章中断习题8.2已知中断向量表表中地址0020H~0023H的单元中依次是40H,00H,00H,01H,并知INT08H指令本身所在的地址为9000H:00A0H。若SP=0100H,SS=0300H,标志寄存器内容为0240H,试指出在执行INT08H指令,刚进入它的中断服务程序时,SP,SS,IP,CS和堆栈顶上三个字的内容(用图表示)。执行后SS=0300HSP=00FAHCS=0100HIP=0040H,堆栈顶上三个字的内容如下所示:栈区A2H00H00H90H40H02HXX00FAH00FCH执行后:0300H:00FEH初始:0300H:01000H8.3某一用户中断源的中断类型号为40H,其中断服务程序名为INTR40,请用两种不同的方法设置它的中断向量。方法一:MOV AX,0 MOV DS,AX MOV AX,OFFSETINTR40 MOV [00C0H],AX MOV AX,SEGINTR40 MOV[00C2H],AX方法二: MOV AX,0 MOV ES,AX MOV DI,40H*4 CLD MOV AX,OFFSETINTR40 STOSW MOV AX,SEGINTR40 STOSW 8.5某一8086CPU系统中,采用一片8259A进行中断管理。设8259A工作在全嵌套方式,发送EIO命令结束中断,边沿触发方式,IR0对应的中断向量号为90H,8259A在系统中的端口地址为FFDCH(A0=0)和FFDDH(A0=1),试编写8259A的初始化程序段。 初试化程序段为:MOV DX,0FFDCHMOV AL,13H OUT DX,AL INC DX INC DXMOV AL,90HOUT DX,ALMOV AL,01OUT DX,AL可编程接口芯片及应用习题9.1试按如下要求分别编写初始化程序,已知计数器0~2和控制字寄存器的端口地址依次为204H~207H。(1)使计数器1工作在方式0,仅用8位二进制计数,计数初值为128。(2)使计数器0工作在方式1,按BCD码计数,计数值为3000。(3)使计数器2工作在方式2,按二进制计数,计数值为02F0H。 初始化程序为: MOV DX,207H MOV AL,50H OUT DX,AL MOV DX,205H MOV AL,80H OUT DX,AL MOV DX,207H MOV AL,23H OUT DX,AL MOV DX,204HMOV AL,30H OUT DX,AL MOV DX,207H MOV AL,0B4H OUT DX,AL MOV DX,206H MOV AL,0F0H OUT DX,AL MOV AL,02 OUT DX,AL9.2硬件如题9.2图,利用PC内部8253定时器0,并用中断方式实现每隔1s使发光二极管亮暗交替显示。(PC内部8253输入时钟频率为1.1932MHz,8253定时器0端口地址为40H,控制寄存器端口地址为43H。Y0为350H)。定时器计数值=1.1932MHz÷5=32864=83D5H软件计数值:50 程序为:(硬件图见教材P345题9.2图)MOV AL,34H OUT 43H,AL MOV AL,0D5H OUT 40H,AL MOV AL,83H OUT 40H,AL MOV BL,50 ┇ T0中断服务程序为: DEC BL JNZ EXIT1 MOV BL,50 MOV AL,BUF NOT AL MOV BUF,AL MOV DX,350H OUT DX,AL EXIT1:MOV AL,20H OUT 20H,AL;(设8259A的端口地址为20H,21H) IRET9.3硬件如题9.3图,8253采用方式0,BCD码计数方式,初始值为1000,每按一次按钮S,计数器值减1。试编程实现显示8253当前计数值,直至计数值为0。8253端口地址范围为80H~83H。(略。在何处显示屏幕/LED/液晶?)9.4图9.4为一简化的键盘/数码管显示接口电路,假设端口线a’~h’及1、2脚送“1”(1)U1为(同相驱动器/反相驱动器)。(2)U2为(同相驱动器/反相驱动器)。(3)数码显示器为(共阴/共阳)数码管。(4)若A键闭合,则端口线3,4的电平为。图9.4见教材P346选用同相驱动器选用反相驱动器选用共阴数码管若A键闭合,则端口线3,4的电平为0,19.5硬件如题9.5图,试编程实现循环检测S0、S1,当S0按下,数码管显示0,当S1按下,数码管显示1,S0、S1同时按下,则结束程序。8255的端口地址范围为80H83H。 程序为: MOV AL,82H OUT 83H,ALAGAIN: IN AL,81H TEST AL,03 JZ EXIT TEST AL,01 JZ NEXT MOV AL,3FH OUT 80H,AL JMP AGAIN NEXT: TESTAL,02 JZ NEXT1 MOV AL,06 OUT 80H,AL JMP AGAINNEXT1:MOV AL,00 OUT 80H,AL JMP AGAINEXIT:MOV AH,4CH INT 21H第10章串行通信习题10.6设异步传输时,每个字符对应一个起始位,7个信息位,1个奇偶校验位和一个停止位,如果波特率为9600,每秒能传输的最大字符数为多少个? 字符数=9600位/秒÷10位/字符=960(字符/秒)10.13要求8251A工作于异步方式,波特率系数为16,字符长度为7位,奇校验,2个停止位。工作状态要求:复位出错标志,使请求发送信号RTS有效,使数据终端准备好信号DTR有效,发送允许TxEN有效,接受允许RxE有效。设8251A的两个端口地址分别为0C0H和0C2H,试完成初始化编程。初始化程序为: MOV AL,11011010B(DAH) OUT 0C2H,AL MOV AL,00110111B(37H) OUT 0C2H,AL第11章模数、数模转换习题11.3某8086系统中,A/D转换器ADC0809只使用一个模拟量输入通道,试设计其接口电路,并编写子程序。子程序的功能是启动A/D转换,并以查询方式读入一个采样数据放在寄存器DL中。 设所设计的A/D转换器接口电路如下: 采样程序为: CYSUBR PROC OUT 50H,AL NOP NOP WAIT1: IN AL,51H TEST AL,01 JZ WAIT1 IN AL,50H MOV DL,AL RETCYSUBR ENDP 11.4某8086系统中,由ADC0809构成A/D转换器,通过8255与CPU接口,如题11.4图所示。试编写程序,以查询的方式巡回采样8个模拟量输入通道,每个通道16次。采样数据存放在内存中。 题11.4图 程序段为: MOV AL,10000001B(81H) MOV DX,0FFDBH OUT DX,ALLOP0:MOV DI,OFFSETBUF MOV BL,0LOP1: MOV CX,16 MOV AL,BL MOV DX,0FFD8 OUT DX,ALCONT: MOV DX,0FFCAH MOV AL,0C0H OUT DX,AL NOP NOPLPO2: IN AL,DX TEST AL,01 JZ LOP2 DEC DX IN AL,DX MOV [DI] ,AL INC DI LOOP CONT INC BL CMP BL,8 JNZ LOP1 ┇ JMP LOP0XX理工大学微机原理及程序设计实验指导书XX理工大学信息工程与自动化学院自动化系2021年10月微机原理实验实验要求及运行环境实验要求与注意事项:交纸质版实验报告,实验要求:实验成绩百分制(总分100分)实验过程(50分)提前预习,写好实验报告,标好注释,修改好程序;10分个人按要求独立完成,填好实验结果,对实验程序进行讲解,按时交实验报告20分不做与本实验无关的事(如玩游戏、聊天、打、听音乐等)5分不得缺席,实验签名(两份),按要求填写设备号实验名称等,不带他人签名5分带走自己的垃圾,保持实验室卫生,电脑设备桌椅摆设整齐,保管好个人物品5分按秩序进出实验室,不拥挤,注意安全,爱护设备,保证设备完好5分实验报告(50分)报告纸要统一,全部手写并填写好表头,包括:实验名称、姓名、学号、班级任课老师等2分实验目的、实验内容3分程序框图5分程序清单5分读懂程序加注释(每句注释13+分段注释7)20分实验结果,实验中经老师检查过5分程序修改,实验要求的完成及结果(可用蓝/黑在原程序上标明,并加注释)10分交电子版实验报告,实验要求:实验成绩百分制(总分100分)实验过程(50分)提前预习,标好程序注释,修改好程序;10分个人按要求独立完成,填好实验结果,对实验程序进行讲解,按时交实验报告20分不做与本实验无关的事(如玩游戏、聊天、打、听音乐等)5分不得缺席,实验签名(两份),按要求填写设备号实验名称等,不带他人签名5分带走自己的垃圾,保持实验室卫生,电脑设备桌椅摆设整齐,保管好个人物品5分按秩序进出实验室,不拥挤,注意安全,爱护设备,保证设备完好5分实验报告(50分)报告按统一格式要求填写,包括:课程名称、姓名、学号、班级任课老师等10分实验报告包括实验目的、实验内容、程序框图、程序清单、实验要求5分读懂程序加注释(每句注释13+分段注释7)20分实验结果,实验中经老师检查过5分程序修改,实验要求的完成及结果(可用其他颜色标明添加的程序,与原程序不同,并加注释)10分2、实验运行环境在电脑中装ASMMasmforwindows集成实验环境2021。双击图标打开ASMMasMforwindows集成实验环境运行工作界面,输入实验程序代码,调试、改错、保存、运行、查看结果,进行记录。运行结果显示:实验一两个多位十进制数相加的实验实验目的1、学习数据传送和算术运算指令的用法。2、熟悉在PC机上建立、汇编、链接、调试和运行8088汇编语言程序的过程。实验内容将两个多位十进制数相加。要求被加数均以ASCII码形式各自顺序存放在以DATA1和DATA2为首的5个内存单元中(低位在前),结果送回DATA1处。程序框图显示被加数和加数被加数和加数以ASCII码表示的数字串形式转化为由十六进制表示的数字串形式计数值5→CX清除最低位进位执行ADC带进位相加AAA调整结果送被加数区调整偏移量NCX-1=0?Y十六进制的结果转化为ASCII码表示的数字串显示结果结束程序清单CRLFMACRO;宏定义,宏名:CRLFMOVDL,0DH;把0DH给DLMOVAH,02H;把02H给AHINT21H;系统功能调用——实现回车功能MOVDL,0AH;把0AH给DLMOVAH,02H;把02H给AHINT21H;系统功能调用——实现换行功能ENDM;宏定义结束——本段实现回车换行功能DATASEGMENT;数据段定义,段名DATADATA1DB33H,39H,31H,37H,34H;变量DATA1中装入加数DATA2DB36H,35H,30H,38H,32H;变量DATA2中装入被加数DATAENDS;数据段定义结束——本段实现了两个数据的定义STACKSEGMENTSTADB20DUP(?)TOPEQULENGTHSTASTACKENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACK,ES:DATASTART:MOVAX,DATAMOVDS,AXMOVAX,STACKMOVSS,AXMOVAX,TOPMOVSP,AXMOVSI,OFFSETDATA2MOVBX,05CALLDISPLCRLFMOVSI,OFFSETDATA1MOVBX,05CALLDISPLCRLFMOVDI,OFFSETDATA2CALLADDAMOVSI,OFFSETDATA1MOVBX,05CALLDISPLCRLFMOVAX,4C00HINT21HDISPLPROCNEARDS1:MOVAH,02MOVDL,[SI+BX-1]INT21HDECBXJNZDS1RETDISPLENDPADDAPROCNEARMOVDX,SIMOVBP,DIMOVBX,05AD1:SUBBYTEPTR[SI+BX-1],30HSUBBYTEPTR[DI+BX-1],30HDECBXJNZAD1MOVSI,DXMOVDI,BPMOVCX,05CLCAD2:MOVAL,[SI]MOVBL,[DI]ADCAL,BLAAAMOV[SI],ALINCSIINCDILOOPAD2MOVSI,DXMOVDI,BPMOVBX,05AD3:ADDBYTEPTR[SI+BX-1],30HADDBYTEPTR[DI+BX-1],30HDECBXJNZAD3RETADDAENDPCODEENDSENDSTART实验要求读懂源程序,写出源程序注释。把源程序修改为任意两个六位十进制相加。并思考如果最高位有进位怎么办?实验二两个数相乘的实验一、实验目的 掌握乘法指令和循环指令的用法。二、实验内容 实现十进制数的乘法。被乘数和乘数均以ASCII码形式存放在内存中,乘积在屏幕上显示出来。三、程序框图乘数→BLBL中数由ASCII码转化为十六进制SI指向被乘数计数值5→CX取被乘数[SI]单元与BL相乘AAM调整结果低位与前次计算的进位[DI]相加AAA调整结果→[DI]DI+1指向下一单元本次计算的进位→[DI]NCX-1=0?Y显示结果结束四、程序清单DATA SEGMENTDATA1 DB 32H,39H,30H,35H,34HDATA2 DB 33HRESULT DB 6 DUP(00H)DATA ENDSSTACK SEGMENTSTA DB 20 DUP(?)TOP EQU LENGTHSTASTACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATASTART: MOV AX,DATA MOV DS,AX MOV AX,STACK MOV SS,AX MOV AX,TOP MOV SP,AX MOV SI,OFFSET DATA2 MOV BL,[SI] AND BL,00001111B MOV SI,OFFSET DATA1 MOV DI,OFFEST RESULT MOV CX,05LOOP1: MOV AL,[SI] AND AL,00001111B INC SI MUL BL AAM ADD AL,[DI] AAA MOV [DI],AL INC DI MOV [DI],AH LOOP LOOP1 MOV CX,06 MOV SI,OFFSET RESULTDISPL: MOV AH,02 MOV DL,[SI+5] ADD DL,30H INT 21H DEC SI LOOP DISPL MOV AX,4C00H INT 21HCODE ENDSEND START五、实验要求 1.读懂程序,写出程序注释。 2.修改程序,实现6位数乘2位数的功能。实验三BCD码相乘的实验一、实验目的 掌握用组合的BCD码表示数据,并熟悉怎样实现组合BCD码乘法运算。二、实验内容 实现BCD码的乘法,要求被乘数和乘数均以组合的BCD码形式存放,各占一个内存单元,乘积存放在另外两个内存单元中。 由于没有组合BCD码乘法指令,所以程序中采用将乘数1作为计数器,累加另一个乘数的方法得到计算结果。三、程序框图显示乘数1和乘数2乘数1→计数器BL中部分积DX清0YBL=0?N进位位清0显示结果乘数2与部分积低位相加结束DAA调整结果→DL部分积高位进行进位位调整DAA调整结果→DH计数器BL的值减1DAS调整,并将结果送BL四、程序清单DISPLMACROADDDL,30HMOVAH,02INT21HENDMCRLFMACROMOVDL,0DHMOVAH,02INT21HMOVDL,0AHMOVAH,02INT21HENDMDATASEGMENTDATA1DB01001000BDATA2DB01110101BRESULTDW?DATAENDSSTACKSEGMENTSTACKSTADB20DUP(?)TOPEQULENGTHSTASTACKENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACK,ES:DATASTART:MOVAX,DATAMOVDS,AXMOVAX,STACKMOVSS,AXMOVAX,TOPMOVSP,AXMOVDI,OFFSETRESULTMOVSI,OFFSETDATA1MOVAH,[SI]MOVCL,04SHRAH,CLMOVDL,AHDISPLMOVAL,[SI]MOVBL,ALANDAL,00001111BMOVDL,ALDISPLCRLFMOVSI,OFFSETDATA2MOVAH,[SI]MOVCL,04SHRAH,CLMOVDL,AHDISPLMOVAL,[SI]ANDAL,00001111BMOVDL,ALDISPLCRLFXORDX,DXS1:CMPBL,0JZS2CLCMOVAL,[SI]ADCAL,DLDAAMOVDL,ALMOVAL,00HADCAL,DHDAAMOVDH,ALMOVAL,BLDECALDASMOVBL,ALJMPS1S2:MOV[RESULT],DXMOVSI,DXMOVCL,4SHRDH,CLMOVDL,DHDISPLMOVDX,SIANDDH,00001111BMOVDL,DHDISPLMOVDX,SIMOVCL,4SHRDL,CLDISPLMOVDX,SIANDDL,00001111BDISPLCRLFS3:MOVAX,4C00HINT21HCODEENDSENDSTART五、实验要求1.读懂源程序,写出程序注释。2.修改程序使其不显示被乘数和乘数。实验四字符匹配程序一、实验目的 掌握提示信息的使用方法及键盘输入信息的用法。二、实验内容 编写程序,实现两个字符串比较。如果两个字符串中有一个字符相同,显示“MATCH”,否则,显示“NOMATCH”。三、程序框图段寄存器及堆栈初始化显示“请输入字符串1”使用INT21H的0A号子功能,接收键入的字符串显示“请输入字符串2”指针SI指向串1的首字符SI指向的字符串和串2中所有字符作比较Y相等?NSI+1,指向串1中下一字符N串1中的字符已取完?Y显示“NOMATCH”显示“MATCH”返回DOS四、程序清单CRLFMACROMOVAH,02HMOVDL,0DHINT21HMOVAH,02HMOVDL,0AHINT21HENDMDATASEGMENTMESS1DB'MATCH',0DH,0AH,'$'MESS2DB'NOMATCH',0DH,0AH,'$'MESS3DB'INPUTSTRING1:',0DH,0AH,'$'MESS4DB'INPUTSTRING2:',0DH,0AH,'$'MAXLEN1DB81ACTLEN1DB?STRING1DB81DUP(?)MAXLEN2DB81ACTLEN2DB?STRING2DB81DUP(?)DATAENDSSTACKSEGMENTSTACKSTADB50DUP(?)TOPEQULENGTHSTASTACKENDSCODESEGMENTASSUMECS:CODE,DS:DATA,ES:DATA,SS:STACKSTART:MOVAX,DATAMOVDS,AXMOVES,AXMOVAX,STACKMOVSS,AXMOVSP,TOPMOVAH,09HMOVDX,OFFSETMESS3INT21HMOVAH,0AHMOVDX,OFFSETMAXLEN1INT21HCRLFMOVAH,09HMOVDX,OFFSETMESS4INT21HMOVAH,0AHMOVDX,OFFSETMAXLEN2INT21HCRLFCLDMOVSI,OFFSETSTRING1MOVCL,[SI-1]MOVCH,00HKKK:MOVDI,OFFSETSTRING2PUSHCXMOVCL,[DI-1]MOVCH,00HMOVAL,[SI]MOVDX,DIREPNZSCASBJZGGGINCSIPOPCXLOOPKKKMOVAH,09HMOVDX,OFFSETMESS2INT21HJMPPPPGGG:MOVAH,09HMOVDX,OFFSETMESS1INT21HPPP:MOVAX,4C00HINT21HCODEENDSENDSTART五、实验要求1.读懂源程序,写出程序注释。2.修改源程序,使其实现,当两个字符串中所有字符都匹配(注意字符串的长度和顺序)时才显示“MATCH”,否则显示“NOMATCH”。实验五排序实验一、实验目的 掌握用汇编语言编写排序程序的思路和方法。二、实验内容 从首地址为1000H开始存放50个数,要求设计程序将这些数由小到大排序,排序后的数,仍放在该区域中。三、程序框图入口段寄存器和堆栈初始化显示“请输入段址”调GETNUM,键入段址送ES显示“请输入偏移量”调GETNUM,键入偏移量SIDS也指向附加段外循环次数SORTNUM-1送CX偏移指针BX清0A从[SI+BX]单元取数AL交换单元指针AH=BLCX入栈计算内循环次数送CX内循环控制变量DX初始化DX值+1比较AL与DX指示单元的值NAL较大?YDX指示单元的值赋给AL,并修改指针AHNCX-1=0?Y交换[SI+BX]单元和AH指针指示的单元的值偏移指针BX+1CX出栈NACX-1=0?Y显示“SORTOK!”循环调DISP1,将排序后的数依次显示出来返回DOS四、程序清单CRLFMACROMOVAH,02HMOVDL,0DHINT21HMOVAH,02HMOVDL,0AHINT21HENDMDATASEGMENTORG160HDATA1DB0ah,09h,08h,07h,06h,05h,04h,03h,02h,01hSORTNUMEQU10MESS1DB'INPUTSEGMENTVALUE:$'MESS2DB'INPUTOFFSETVALUE:$'MESS3DB'SORTOK!',0DH,0AH,'$'ERRORDB'INPUTERROR!',0DH,0AH,'$'DATAENDSSTACKSEGMENTSTADW32DUP(?)TOPDW?STACKENDSCODESEGMENTASSUMECS:CODE,DS:DATA,ES:DATA,SS:STACKSTART:MOVAX,DATAMOVDS,AXMOVES,AXMOVSP,TOPMOVAH,09HMOVDX,OFFSETMESS1INT21HCALLGETNUMMOVES,DXCRLFMOVAH,09HMOVDX,OFFSETMESS2INT21HCALLGETNUMMOVSI,DXPUSHESPOPDS;DS=ESMOVCX,SORTNUMDECCXXORBX,BXIII:MOVAL,[SI+BX]MOVAH,BLPUSHCXMOVCX,SORTNUMSUBCX,BXDECCXMOVDX,BXJJJ:INCDXPUSHBXMOVBX,DXCMPAL,[SI+BX]JBEUUUMOVAL,[SI+BX]MOVAH,DLUUU:POPBXLOOPJJJMOVCL,[SI+BX]MOV[SI+BX],ALMOVDL,AHPUSHBXMOVBX,DXMOV[SI+BX],CLPOPBXINCBXPOPCXLOOPIIIPUSHDSMOVAX,DATAMOVDS,AXMOVAH,09HMOVDX,OFFSETMESS3INT21HPOPDSMOVCX,SORTNUMVVV:MOVAL,[SI]CALLDISP1CRLFINCSILOOPVVVMOVAX,4C00HINT21HDISP1PROCNEARPUSHCXMOVBL,ALMOVDL,BLMOVCL,04ROLDL,CLANDDL,0FHCALLDISPLMOVDL,BLANDDL,0FHCALLDISPLPOPCXRETDISP1ENDPDISPLPROCNEARADDDL,30HCMPDL,3AHJBDDDADDDL,27HDDD:MOVAH,02HINT21HRETDISPLENDPGETNUMPROCNEARPUSHCXXORDX,DXGGG:MOVAH,01HINT21HCMPAL,0DHJZPPPCMPAL,20HJZPPPSUBAL,30HJBKKKCMPAL,0AHJBGETSCMPAL,11HJBKKKSUBAL,07HCMPAL,0FHJBEGETSCMPAL,2AHJBKKKCMPAL,2FHJAKKKSUBAL,20HGETS:MOVCL,04SHLDX,CLXORAH,AHADDDX,AXJMPGGGKKK:MOVAH,09HMOVDX,OFFSETERRORINT21HPPP:PUSHDXCRLFPOPDXPOPCXRETGETNUMENDPCODEENDSENDSTART实验要求1.读懂程序,写出程序注释。修改程序,使其实现从大到小的排序 实验六接收年、月、日信息显示的程序一、实验目的 掌握响铃符方法,并且掌握年、月、日的输入方法。二、实验内容 先显示“WHATISTHEDATA(MM/DD/YY)?”并响铃一次,然后接收键盘输入的月/日/年信息,并显示。三、程序框图 入口 段寄存器和堆栈初始化 显示“WHATISTHEDATA” 输出响铃字符 调GETNUM,接收键入的月值,日值及年值 调DISP显示年值 输出字符“—” 调DISP显示月值 输出字符“—”调DISP显示日值 返回DOS四、程序清单CRLF MACRO MOV AH,02H MOV DL,0DH INT 21H MOV AH,02H MOV DL,0AH INT 21HENDMDATA SEGMENTMESS DB 'WHATISTHEDATA(MM/DD/YY)?',0DH,0AH,'$'ERROR DB 'INPUTERROR!',0DH,0AH,'$'DATA ENDSSTACK SEGMENTSTA DW 32DUP(?)TOP DW ?STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACKSTART: MOV AX,DATA MOV DS,AX MOV ES,AX MOV SP,TOP MOV AH,09H MOV DX,OFFSETMESS INT 21H MOV AH,02H MOV DL,07H INT 21H CALL GETNUM PUSH DX CALL GETNUM PUSH DX CALL GETNUM MOV AX,DX CALL DISP MOV AH,02H MOV DL,’–’ INT 21H POP DX POP AX CALL DISPP MOV AH,02H MOV DL,’–’ INT 21H MOV AX,DX CALL DISPP INT 21HDISPP PROC NEAR MOV BL,AL MOV DL,BL MOV CL,04 MOV DL,CL AND DL,0FH CALL DISPL MOV DL,BL AND DL,0FH CALL DISPL MOV DL,BL AND DL,0FH CALL DISPL RETDISPP ENDPDISPL PROC NEAR ADD DL,30H CMP DL,3AH JB DDD ADD DL,27HDDD: MOV AH,02H INT 21H RETDISPL ENDPDISP PROC NEAR PUSH BX PUSH CX PUSH DX PUSH AX MOV AL,AH CALL DISPP POP AX CALL DISPP POP DX POP CX POP BX RETDISP ENDPGETNUM PROC NEAR PUSH CX XOR DX,DXGGG: MOV AH,01H INT 21H CMP AL,0DH JZ PPP CMP AL,20H JZ PPP SUB AL,30H JB KKK CMP AL,11H JB KKK SUB AL,07H CMPAL,0FH JBE GETS JB KKK CMP AL,2FH JA KKK SUB AL,20HGETS: MOV CL,04H SHL DX,CL XOR AH,AH ADD DX,AX JMP GGGKKK: MOV AH,09H MOV DX,OFFSETERROR INT 21HPPP: PUSH DX CRLF POP DX POP CX RETGETNUM ENDPCODE ENDSEND START
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 领导动员大会发言稿完整
- 通信产品用户体验设计考核试卷
- 鞋面修补工艺与非物质文化遗产传承考核试卷
- 音响设备智能工厂构建考核试卷
- 阀门与旋塞的微动磨损分析考核试卷
- 高速铁路乘车票务系统的用户体验考核试卷
- 隔音材料在住宅分区墙中的应用考核试卷
- 乡村美术教育推广-洞察分析
- 职业中介服务的绩效考核与激励机制考核试卷
- 伊斯兰金融风险管理体系-洞察分析
- 2024-2025学年深圳市初三适应性考试模拟试卷语文试卷
- DB22JT 147-2015 岩土工程勘察技术规程
- 杵针疗法课件
- 期末测试卷-2024-2025学年语文四年级上册统编版
- 期末复习试题(试题)-2024-2025学年三年级上册数学苏教版
- 2024美容院规章制度(31篇)
- 《咳嗽的诊断与治疗指南(2021)》解读课件
- 现代农业机械操作考核试卷
- 2024-2030年中国纪录片行业前景动态及发展趋势预测报告
- 小学数学教师培训完整方案
- 山东省济南市2023-2024学年高一年级上册1月期末考试物理试题(含解析)
评论
0/150
提交评论