资源描述
实验三 数据串传送和查表程序实验目的通过实验掌握下列知识:1、利用简化段定义方法实现程序结构定义;2、利用DOS的21H号中断调用完成输入输出;3、查表法和查表指令XLAT;4、数据串传送指令MOVS及重复前辍REP;5、掌握EQU和DUP伪指令的用法。实验内容及步骤一、利用查表方法显示内存单元的内容1、编辑下列程序:.model small.stack.data str1 db ABCDEFGHIJ ;待显示的内存区内容 str2 db Please input the number you will display:,10,13,$.code.startup mov ah,9 mov dx,offset str2 int 21h ;显示STR2字符串的内容,即提示信息 mov ah,1 int 21h ;输入待显示的字符序号(0-9) mov bx,offset str1 sub al,30h xlat ;查STR1表,对应序号的字符ASCII码进入AL mov dl,al mov ah,2 int 21h ;显示对应字符.exit 0End2、程序汇编通过后,在运行过程中输入0-9的任意数字,显示STR1字符串中对应位置 的字符。3、在DEBUG环境中,用P命令调试执行该程序,察看AL寄存器的变化情况及结果的输出, 分析其执行过程。二、数据串传送程序1、编辑下列程序:.model small.stack.data str1 db abcdefghijklmn ;源串定义 lengs equ $-str1 str2 db lengs dup (?),$ ;目标串.code.startup mov ax,ds mov es,ax ;使DS和ES为同一个段 cld lea si,str1 lea di,str2 mov cx,lengs rep movsb ;串复制 mov ah,9 mov dx,offset str2 int 21h ;显示目标串.exit 0End2、程序汇编通过后,运行程序察看输出结果3、在DEBUG环境中,用P命令调试执行该程序,察看SI、DI寄存器及相应内存单元的变化情况,分析其执行过程。4如果把源串的小写字母复制到目标串的同时再修改为对应的大写字母,该怎么修改程序?可以把串复制部分修改,先从源串中取出字符,修改后送到目标串即可。程序改为:.model small.stack.data str1 db abcdefghijklmn ;源串定义 lengs equ $-str1 str2 db lengs dup (?),$ ;目标串.code.startup mov ax,ds mov es,ax ;使DS和ES为同一个段 lea si,str1 lea di,str2 mov cx,lengs lp: ;循环开始的标志 mov al,si ;将源串的字符取出 sub al,20H ;将小写改为大写 mov di,al ;将修改后的字符送到STR2 inc si inc di loop lp mov ah,9 mov dx,offset str2 ;lea dx,str2 int 21h ;显示目标串.exit 0End运行前:运行后:实验附录 ASCII码表 编码字符编码字符编码字符编码字符00NUL20SPACE406001SOH21!41A61a02STX22“42B62b03ETX23#43C63c04EOT24$44D64d05ENQ25%45E65e06ACK26&46F66f07BEL2747G67g08BS28(48H68h09HT29)49I69i0ALF2A*4AJ6Aj0BVT2B+4BK6Bk0CFF2C,4CL6Cl0DCR2D-4DM6Dm0ESO2E.4EN6En0FSI2F/4FO6Fo10DEL30050P70p11DC131151Q71q12DC232252R72r13DC333353S73s14DC434454T74t15NAK35555U75u16SYN36656V76v17ETB37757W77w18CAN38858X78x19EM39959Y79y1ASUB3A:5AZ7Az1BESC3B;5B7B1CFS3C5E7E1FUS3F?5F_7FDEL
展开阅读全文