微机原理与接口技术李珍香版十个实验程序实验一1.实验目的:掌握汇编语言源程序的结构。
2.实验内容:显示一串字符串“hellow world! 班级,学号”。
3.实验代码:DATA SEGMENTMS DB ' Hello,World!$'NS DB ' 151044A,151044106$'DATA ENDSSTACK SEGMENT STACKDW 50 DUP(?)STACK ENDSCODE SEGMENTASSUME DS:DATA,CS:CODE:CODE,SS:STACK START:MOV AX,DATAMOV DS,AXMOV DX,OFFSET MSMOV AH,9INT 21HMOV AX,DATAMOV DS,AXMOV DX,OFFSET NS MOV AH,9INT 21HMOV AH,4CHINT 21HCODE ENDSEND START4.实验结果:实验二1.实验目的:熟悉汇编语言源程序的编辑、汇编、连接、调试过程2.实验内容:两个8位16进制数相加(生日+当天日期)3.实验代码:DATA SEGMENTSR DD 19970925HRQ DD 20171111HDATA ENDSSTACK SEGMENT STACKDB 50 DUP(0)STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART:MOV AX,DATAMOV DS,AXMOV AX,WORD PTR SRADD AX,WORD PTR RQMOV BX,WORD PTR SR+2ADC BX,WORD PTR RQ+2MOV AH,4CHINT 21HCODE ENDSEND START4.实验结果:实验三1.实验目的:主要掌握汇编伪指令DB、DW、ORG、$的功能和用法2.实验内容:在内存单元X中定义一个8位数,要求将其高4位放入X+1单元的低4位,低4位放入X+2单元的低4位,并将X+1 与X+2单元的高4位清0。
3.实验代码:DATA SEGMENTX db 23h,?,?DATA ENDSSTACK SEGMENT STACKDW 100 DUP(?)STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV AL,XMOV CL,4SHR AL,CLMOV X+1,ALMOV AL,XAND AL,0FHMOV X+2,ALMOV AH,4CHINT 21HCODE ENDSEND START 4.实验结果:实验四1.实验目的:理解和掌握变量的定义方法及系统如何为变量分配空间2.实验内容:实现将存放在AX与DX中的32位数据循环右移二进制数的4位。
3.实验代码:CODE SEGMENTASSUME CS:CODESTART:MOV CL,4MOV BH,ALSHL BH,CLSHR AX,CLMOV BL,DLSHL BL,CLSHR DX,CLOR AH,BLOR DH,BHMOV AH,4CHINT 21HCODE ENDSEND START 4.实验结果:实验五1.实验目的:掌握条件转移、无条件转移指令的使用方法2.实验内容:编写程序计算|X|的值,其中X为存放于X单元单元的16位操作数,要求将结果存入result单元中。
3.实验代码:DATA SEGMENTX DB -100RESULT DB ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV AL,XCMP AL,0JGE DONENEG ALDONE:MOV RESULT,ALMOV AH,4CHINT 21HCODE ENDS END START4.实验结果:实验六1.实验目的:掌握分支程序设计、编写、调试和运行的方法。
2.实验内容:从键盘输入一个字符,并判断该字符是否为一个数字,如果是请输出该数字字符,如果不是请输出“这不是一个数字”的英文提示信息(要求:能连续输入)。
3.实验代码:data segmentstr1 db 'PLEASE ENTER:',0AH,0DH,'$'STR2 DB 'This is not a number!',0AH,0DH,'$'DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXAGAIN:MOV AH,09HLEA DX,STR1INT 21HMOV AH,08HINT 21HCMP AL,'#'JZ EXITCMP AL,'9'JA FALSEMOV AH,2MOV DL,ALINT 21HMOV DL,0AHMOV AH,02HINT 21HJMP AGAIN FALSE:MOV DX,OFFSET STR2 MOV AH,9INT 21HJMP AGAINEXIT:MOV AH,4CHINT 21HCODE ENDSEND START 4.实验结果:实验七1.实验目的:熟悉运算类指令对标志位的状态影响以及标志位状态的表示方法2.实验内容:编写一汇编语言程序,实现统计DX数据中所含的1的个数。
3.实验代码:DATA SEGMENTSHU DW 10HCOUNT DB 0DATA ENDSSTACK SEGMENT STACKDB 100 DUP(?)STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART:MOV AX,DATAMOV DS,AXMOV DX,SHUMOV CL,0JIA:AND DX,DXJE EXITSHL DX,1JNC JIAINC CLJMP JIAEXIT:MOV COUNT,CLMOV AH,4CHINT 21HCODE ENDSEND START4.实验结果:实验八1.实验目的:掌握循环指令LOOP、LOOPZ、LOOPNZ的使用方法2.实验内容:在数据段变量名为A的数据区内有10个字符,编程实现将这10个字符以相反次序传送到附加段变量名为B的内存区中。
源程序已部分给出,请将程序补充完整,并调试运行结果。
3.实验代码:DATA SEGMENTA DB '1234567890'n equ $-aB DB n dup(?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,ES:DATASTART:MOV AX,DATAMOV DS,AXMOV ES,AXLEA SI,ALEA DI,BADD DI,9MOV CX,10 MOVE:MOV AL,[SI]MOV ES:[DI],AL INC SIDEC DILOOP MOVE MOV AH,4CH INT 21H CODE ENDSEND START4.实验结果:实验九1.实验目的:掌握实现单重、多重循环程序设计、编写、调试和运行的方法2.实验内容:编写一个程序,将内存1000H开始的连续100个字节送往2000H开始的连续100个内存单元中。
3.实验代码:DATA SEGMENTORG 1000HA DB 100 DUP(?)ORG 2000HB DB 100 DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,SEG DATAMOV DS,AXMOV SI,OFFSET AMOV CX,100MOV BL,0L0:MOV [SI],BLINC SIINC BLLOOP L0MOV SI,0LEA SI,ALEA DI,BADD SI,99ADD DI,99MOV CX,100L1:MOV AL,[SI]MOV [DI],ALDEC SIDEC DILOOP L1MOV AH,4CHINT 21HCODE ENDSEND START 4.实验结果:实验十1.实验目的:掌握实现单重、多重循环程序设计、编写、调试和运行的方法。
2.实验内容:编程实现由键盘输入任意一个字符,将该字符用二进制形式显示出它的ASCII码值(譬如:若从键盘上键入“A”,则运行时在屏幕上显示出“01000001B”)。
3.实验代码:CODE SEGMENTASSUME CS:CODESTART:MOV AH,1INT 21HMOV BL,ALMOV CX,8L1:SHL BL,1JNC L2MOV DL,31HJMP L3L2:MOV DL,30HJMP L3L3:MOV AH,2INT 21HLOOP L1MOV AH,4CHINT 21HCODE ENDSEND START 4.实验结果:。