实验1 汇编语言语法练习与代码转换
- 格式:doc
- 大小:215.00 KB
- 文档页数:6
《微机原理与接口技术》课程设计(学年论文)说明书课题名称:代码转换程序设计(A3-2)学生学号:专业班级:学生姓名:学生成绩:指导教师:***课题工作时间: 2011-6-13 至 2011-6-18武汉工程大学教务处制填写说明:1. 一、二、三项由指导教师在课程设计(学年论文)开始前填写并交由学生保管;2. 四、五两项由学生在完成课程设计后填写,并将此表与课程设计一同装订成册交给指导教师;3. 成绩评定由指导教师按评定标准评分。
4. 此表格填写好后与正文一同装订成册。
课程设计评审标准(指导教师用)代码转换程序设计说明书1、方案论证(1)大小写字母、二进制与十六进制、十六进制与十进制的转换方法在计算机系统中有多种数制和编码,常用的有二进制,八进制以及16进制。
这些数制和编码虽然在储存形式上各有差异,但彼此也相互联系。
大小写转换,主要利用小写字母比大小字母大20H的关系,将小写字母减20H就转换为大写字母,将大写字母加20H就转换为小写字母。
二进制,十进制以及16进制,主要利用0到9的数值等于相应ASCALL码减30H,而A到F的数值等于相应ASCALL码减37H,这样即可利用移位,除十取余取整等方法实现其相互转换。
(2)宏汇编程序设计要点宏是源程序中的一段有独立功能的程序代码。
宏指令,用户自定义的指令。
编程序时候,将多次使用的功能用一条宏指令来代替。
汇编包括指令,伪指令,宏指令。
前两个都是规定的,最后一个是自己设计的。
好处是用起来方便定义,但是要先定义,后调用,其优点是可以随时随地的调用宏汇编程序。
2、程序设计(1)总体设计对“实现从键盘输入16位二进制数,转换成4位十六进制数显示出来。
”的分析处理。
首先将键盘输入的二进制数以二进制形式储存起来:每次输入,将其ASCALL码值将减去30H,然后左移一位,在然后与下个输入的减30H的数相加,这样就将键盘输入的值以二进制形式储存在寄存器中.二进制转换为16进制数输出:用循环指令左移四位,取出最低4位,利用16进制所对应的ASCALL码值比其本身大30H或37H的关系,将低位转换成对应的ASCALL码值,再调用DOS系统显示字符功能,将转换后的字符显示出来,如此循环四次即可.程序总流程图:(2)程序设计二进制转十六进制流程图:程序代码及注释:;PUBLIC XPEXTRN INFO4:BYTE,INFO1:BYTE,INFO2:BYTECODE SEGMENTXP PROC FARASSUME CS:CODECALL DEC2BIN ;调用将键盘输入的ASCALL值转换为二进制数LEA DX,INFO2MOV AH,9INT 21H ;显示提示信息CALL BIN2HEX;调用将储存的二进制转换为16进制函数MOV DL,'H'MOV AH,2INT 21HRETCAL: MOV DL,0DHMOV AH,2INT 21HMOV DL,0AHMOV AH,2INT 21HLEA DX,INFO4MOV AH,9INT 21H;输入非二进制数,显示错误DEC2BIN PROC NEARLEA DX,INFO1MOV AH,9INT 21H;显示提示信息XOR BX,BX ;BX清零NEWCHAR: MOV AH,1INT 21H ;键盘输入,存放在AL中CMP AL,0DHJE RE;如果输入回车键,键盘输入结束SUB AL,30HJL CALCMP AL,1JG CAL ;输入为非二进制数,显示错误并退出CBWXCHG AX,BXMOV CX,2MUL CXXCHG AX,BXADD BX,AXJMP NEWCHAR;将键盘输入的制转换为二进制数,存放在BX中,并且每输入一个值,先将BX左移一位再相加. RE: MOV DL,'B'MOV AH,2INT 21HRETDEC2BIN ENDPBIN2HEX PROC NEARMOV C H,4ROTATE: MOV CL,4ROL BX,CL ;BX每左移4位输出,四位二进制表示一位十六进制MOV A L,BLAND A L,0FHADD A L,30HCMP A L,3AHJL PRINTIT ;结果若为0到9的数,则加30H后直接输出ADD AL,07H ;结果若为A到F的数,则加30H后再加07H直接输出PRINTIT: MOV DL,ALMOV AH,2INT 21HDEC CHJNE ROTATERETBIN2HEX ENDPCRLF PROC NEARMOV DL,0DHMOV AH,2INT 21HMOV DL,0AHMOV AH,2INT 21H ;回车换行RETCRLF ENDPXP ENDPCODE ENDSEND3、程序调试步骤与结果(1)编辑源程序(2)汇编源程序(3)连接程序(4)在TD中调试程序(5)程序运行结果结果说明:当输入小写字母(如a)时,就转换成相应的大写字母(如A),反之亦然;当如入二进制(如1011B),,就转换成相应的十六进数(000BH),反之亦然;如果输入的字母或数字不符合要求,就会显示“INPUT ERROR”4、结论。
汇编语言指令及伪指令练习的实验报告总结汇编语言指令及伪指令练习的实验报告总结篇一:汇编语言实验报告福建农林大学金山学院课程名称:姓名:系:专业:年级:学号:指导教师:职称: (程序设计类课程) 实验报告汇编语言 201X~201X学年第二学期实验项目列表福建农林大学金山学院实验报告系:专业:年级:姓名:学号:实验课程:汇编语言实验室号:_ _1#605 实验设备号: I3 实验时间:201X.4.25指导教师签字:成绩:实验一汇编程序的汇编及运行1.实验目的和要求 (1)熟悉汇编程序的汇编、连接、执行过程;(2)生成LST文件,查看L ST文件;(3)生成BJ文件,修改语法错误;(4)生成EXE文件;(5)执行程序。
2.实验环境 IBM—PC机及其兼容机;实验的软件环境是:操作系统: DS2.0以上;调试程序: DEBUG.CM;文本编程程序: EDIT.EXE、PS.EXE;宏汇编程序:MA SM.EXE(或AS M .EXE);连接装配程序:L INK .EXE;交叉引用程序:CREF.EXE(可有可无)。
3.实验内容及实验数据记录(1)将数据段输入,取名 1.txt,保存在MASM文件夹下。
生成LST文件,(不必连接、运行)用EDI T查看1.LS T文件。
试回答: DA1,DA2的偏移量分别是多少?C UNT的值为多少?DATA SEGME NT RG 20HNUM1=8 NUM2=NUM1+10H DA1 DB ‘I BM PC’ CUN T EQU $-DA1 DATA END S DA2 DB 0AH, 0DH EN D(2)输入有错误的文件,修改错误语句。
(MASM没有出现错误即可。
不必连接、运行。
)D ATA SEGMEN T VAR1 DB0, 25, DH,300 VAR2DB 12H, A4H, 6BH VAR3 DB ’ABCD EF’ VAR4 D 1H, 5678H VAR5 D 10H DUP(?) D ATA ENDS C DE SEGMENT ASSUME CS: CDE, DE: DATA MV D S, AX LEASI, VAR5 M V BX, FFSE T VAR2 MV[SI], 0ABH MV AX, VA R1+2 MV [B X], [SI] M V VAR5+4,VAR4 MV AH, 4CH INT21H ENDS E ND START B EING MV AX, DATA CDE(3)输入正确的程序,汇编、连接、运行 STACKS SEGMENT S TACK D 128DUP(?) EN DS SEGMENT ENDS SEGM ENT ASSUME CS: CDES,DS: DATAS STACKS DA TAS DATASCDES STRIN G DB ‘ELCM E!’, 13, 10, ‘$’ STA RT: MV AX, DATAS MV DS, AX LEA DX, S TRING MV A H, 9 INT 21H MV AH,4CH INT 21H CDES END S END STAR T4.算法描述及实验步骤 1)首先,用记事本输入各段程序,并储存成源程序,保存在MASM目录下。
信息工程学院课程设计报告设计题目:______代码转换程序设计______名称: 微机原理与接口课程设计班级:_______通信工程1002班______姓名:_______卓自强_王可______学号: ____2010013544 2010013524__设计时间: 至指导教师:__________卢清平____________评语:评阅成绩: 评阅教师:一、程设计的性质和目的通过课程设计,进行程序设计方法和技能的基本训练,巩固在课堂上学到的有关软件程序设计的基本知识和基本方法,硬件电路的设计等,通过实际动手能力的培养,进一步熟悉汇编语的结构和使用方法,掌握软硬结合的控制程序设计,达到能独立阅读、编制和调试一定规模的汇编语言程序的水平,增进对汇编语言的认识,加强用汇编语言编程的能力;掌握汇编语言的中断调用功能的应用,可以用汇编语言调用各种中断调用功能,并由此实现对硬件的控制等。
了解和掌握汇编语言程序设计过程、方法及实现,为以后相关的课程的学习打下良好基础。
二、课程设计要求1、遵循模块化、结构化的程序设计方法。
2、要求程序必须正确。
3、程序简明易懂,多运用输入输出提示,有出错信息及必要的注释。
4、要求程序结构合理,语句使用得当。
5、适当追求编程技巧和程序运行效率。
三、主要仪器设备及软件Pc机,MASM汇编软件,绘图软件,等四、课程设计题目及要求题目:代码转换程序要求:完成一个字母或数制之间的转化程序,主程序分别具有5种可选择的子功能,按相应的字符可分别进入相应的子功能并在屏幕上显示结果,按“q”键退出。
5种可选择的子功能分别为:1)实现小写字母向大写字母的转换2)实现大写字母向小写字母的转换3)实现二进制数向十六进制数的转换4)实现十六进制数向二进制数的转换5)实现十六进制数向十进制数的转换五、课题分析及设计思路1、实现大小写字母之间的转换:输入的字符串中,不是字母的字符不改变;大写字母改成小写字母时,若是大写字母则不改变;同样,小写字母改成大写字母时,若是小写字母则不改变2、二进制和十六进制数之间的转换:输入一个二进制数(或十六进制数),用十六进制数(或二进制数)表示输出;最多能把十六位二进制数(或四位十六进制数)用四位十六进制数(或十六位二进制数)表示输出;小于十六位(或四位)时按“q”结束并输出3、十进制数和十六进制数之间的转换:输入一个十六进制数,用十进制数表示输出;最大能把十六进制数FFFF转换成十进制数65535表示输出;小于FFFF时按“q”结束并输出整个程序由四个主要的子程序和若干个辅助子程序组成,实现六个转换功能:HEXIDEC用来把一个十六进制数转换成十进制数表示BINARY用来把十六制数转换为十六位二进制数表示BETOHE用来把一个十六位二进制数转换成十六进制输出1、INPUT用来输入字符串2、HEXIBIN用来输入一个十六进制数,并存放在BX中3、BINIDEC用来把BX中十六进制转换到十进制4、DEC_DIV用来除以各位十进制的权5、PRINT用来把BX中的十六进制数转换成二进制8、INBIN输入十六二进制数9、CRLF用来换行六、程序主要流程等于1调用BTOS 等于2调用STOB等于3调用HTOB等于4调用BTOH等于5调用HTOD调用INPUT 宏展开GAIXIE七、程序及主要代码与分析7.1程序及主要代码GAIXIE MACRO P1,P2,P3,P4,P5,P6 ;义该宏用来判定字母? P2: CMP BYTE PTR [SI],P3JB P5CMP BYTE PTR [SI],P4JNB P5CMP BYTE PTR [SI],'$' ;到$则结束JZ P6P1 BYTE PTR [SI],20HP5: INC SILOOP P2P6: LEA DX,BUF1+2 ;出改写后的字母MOV AH,9 ;调用9号中断功能,输出字符串INT 21HLEA DX,BF ;把BF首地址给CXMOV AH,9 ;调用9号中断功能INT 21HJMP START ;返回ENDMDA TA SEGMENT ;义数据段BUF DB '**********choose the operation**********',0DH,0AH DB '1:big to small',0DH,0AHDB '2:small to big',0DH,0AHDB '3:hexadecimal to binary',0DH,0AHDB '4:binary to hexadecimal',0DH,0AHDB '5:hexadecimal to decimal',0DH,0AHDB '6/q:EXIT',0DH,0AH,'$'BF DB 0DH,0AH,'$'BUF1 DB 21,?,20 DUP(?) ;用来存放输入的字符串BUF2 DB 'enter a hex data:$'BUF3 DB 'The input is wrong,choose again please:$'BUF4 DB 'enter a deci data:$'BUF5 DB 'enter a bin data:$'DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TASTART:MOV AX,DA TAMOV DS,AXMOV DX,OFFSET BUF ;出选择界面MOV AH,9 ;调用9号中断功能INT 21HMOV AH,1 ;入要选择的操作INT 21HPUSH AX ;NT 会改变AL的值,应压栈保护LEA DX,BF ;行MOV AH,9 ;调用9号中断功能INT 21HPOP AX ;把AX压栈保护CMP AL,'1' ;把AL中内容跟1比较JZ BTOS ;相等则跳转到CMP AL,'2'JZ STOBCMP AL,'3'JZ HTOBCMP AL,'4'JZ BTOHCMP AL,'5'JZ HTODCMP AL,'6'JZ EXITCMP AL,71HJZ EXITLEA DX,BUF3 ;把BUF3的首地址给DXMOV AH,9INT 21HCALL CRLF ;调用子程序CALLJMP START ;返回,重新选择EXIT:MOV AH,4CH ;退出INT 21HBTOH:CALL BETOHE ;调用二进制转十六进制子程序HTOB:CALL BINARY ;调用十六进制转二进制子程序HTOD:CALL HEXIDEC ;调用十六进制转十进制子程序BTOS:CALL INPUT ;大写字母改为小写MOV CX,20 ;作为循环条件GAIXIE ADD,NEXT1,'A','Z',N1,N2 ;宏GAIXIE展开STOB:CALL INPUT ;小写字母改为大写MOV CX,20GAIXIE SUB,NEXT2,'a','z',N3,N4INPUT PROC NEAR ;输入字符串MOV DX,0 ;DX清零MOV DX,OFFSET BUF1 ;把BUF1的首地址给DXMOV AH,10 ;调用10号中断功能,输出字符串INT 21HLEA DX,BF ;把BF首地址给DXMOV AH,9INT 21HLEA SI,BUF1+2MOV BL,[SI-1] ;把输入的字符个数给BLMOV BH,0 ;BH清零MOV BYTE PTR [BX+SI+1],'$' ;把$作为字符串结束字符LEA DX,BUF1+2MOV AH,9INT 21HRET ;返回INPUT ENDPHEXIDEC PROC NEAR ;用该子程序把一个十六进制数转换成十进制数表示PUSH DS ;保护初始数据段SUB AX,AX ;AX清零PUSH AX ;把AX压栈保护START1: LEA DX,BUF2MOV AH,9INT 21HCALL HEXIBIN ;调用输入一个十六进制数子程序CMP AL,71H ;遇q则退出JZ EXIT1CALL CRLF ;换行CALL BINIDECCALL CRLFJMP START1 ;返回EXIT1:RETHEXIDEC ENDPHEXIBIN PROC NEAR ;输入一个十六进制数,并存放在BX中MOV BX,0 ;把BX清零MOV DX,0 ;作为输入四位的记数器INHEX:CMP DX,4 ;把DX跟4比较JNB HEXEND ;大于则跳转MOV AH,1 ;输入数据INT 21HCMP AL,71H ;遇到q则退出JZ HEXENDSUB AL,30H ;判断是否数字或字母?否则跳出JL HEXENDCMP AL,10 ;判断是否数字JL ADD_TO ;是则存放BX中SUB AL,7 ;把AL内容减7转为字母CMP AL,10 ;判断是否小写字母(a~f)JL HEXENDCMP AL,16JL ADD_TO ;小于则跳转SUB AL,20H ;判断是否大写字母(A~F)CMP AL,10JL HEXENDCMP AL,16JGE HEXENDADD_TO:MOV CL,4 ;作为循环条件SHL BX,CL ;BX乘以16MOV AH,0ADD BX,AX ;两数相加INC DX ;DX加1JMP INHEXHEXEND:RETHEXIBIN ENDPBINIDEC PROC NEAR ;用来把BX中十六进制转换到十进制MOV CX,10000 ;把10000给CX,作为万位的权CALL DEC_DIV ;调用除权子程序MOV CX,1000CALL DEC_DIVMOV CX,100CALL DEC_DIVMOV CX,10CALL DEC_DIVMOV CX,1CALL DEC_DIVRETBINIDEC ENDPDEC_DIV PROC NEAR ;除以各位十进制的权MOV AX,BX ;把BX内容给AXMOV DX,0 ;DX清零DIV CXMOV BX,DXMOV DL,ALADD DL,30H ;转换为ASSIIMOV AH,2INT 21HRETDEC_DIV ENDPCRLF PROC NEAR ;换行LEA DX,BFMOV AH,9INT 21HRETCRLF ENDPBINARY PROC NEAR ;该子程序用来把十六制数转换为十六位二进制数表示START2:LEA DX,BUF2MOV AH,9INT 21HPUSH DS ;把DS压栈SUB AX,AX ;AX清零PUSH AXCALL HEXIBINCMP AL,71HJZ EXIT2CALL CRLFCALL PRINTCALL CRLFJMP START2EXIT2:RETBINARY ENDPPRINT PROC NEAR ;把BX中的十六进制数转换成二进制MOV CX,16D ;记数ROT: SHL BX,1D ;每移一位最高位变为CFJC SET ;CF为1则跳到SET,否则输出0MOV DL,30HMOV AH,2INT 21HDEC CXJNZ ROTRETSET:MOV DL,31H ;输出1MOV AH,2INT 21HDEC CXJNZ ROTRETPRINT ENDPDECIBIN PROC NEAR ;输入一个五位的十进制数MOV BX,0MOV CX,0NEWCHAR:CMP CX,5JNB EXIT4MOV AH,1INT 21HCMP AL,71HJZ EXIT4SUB AL,30HJL EXIT4CMP AL,9JG EXIT4CBWINC CXXCHG AX,BXMOV DX,10MUL DXXCHG AX,BXADD BX,AXJMP NEWCHAREXIT4:RETDECIBIN ENDPBINIHEX PROC NEAR ;把BX中的十进制数转换成十六进制输出MOV CH,4ROTA TE:MOV CL,4ROL BX,CL ;把BX中高四位移到低四位,放到AL中MOV AL,BLAND AL,0FHADD AL,30HCMP AL,3AH ;判断是否为数字JL PRINTITADD AL,7PRINTIT:MOV DL,ALMOV AH,2INT 21HDEC CHJNZ ROTA TERETBINIHEX ENDPBETOHE PROC NEAR ;用该子程序来把一个十六位二进制数转换成十六进制数START3:LEA DX,BUF5MOV AH,9INT 21HPUSH DSSUB AX,AXPUSH AXCALL INBINCMP AL,71HJZ EXIT5CALL CRLFCALL BINIHEXCALL CRLFJMP START3EXIT5:RETBETOHE ENDPINBIN PROC NEAR ;输入十六二进制数MOV BX,0MOV CX,0PUTIN:CMP CX,16JNB EXIT6MOV AH,1INT 21HCMP AL,1BHJZ EXIT6SUB AL,30HJL EXIT6CMP AL,1JG EXIT6CBWINC CXXCHG AX,BXMOV DX,2MUL DXXCHG AX,BXADD BX,AXJMP PUTINEXIT6:RETINBIN ENDPCODE ENDSEND START7.2算法分析小写字母的ASCII码比大写字母的ASC码大20H,因此,大写字母转换成小写字母就是将大写字母的ASCII码加20H,反之,小写字母转换成大写字母就是将小写字母的ASCII码减20H。
汇编语言常见问题实验报告(带正确源代码)汇编语言程序设计实验报告计科0803余廷钊2008420692010 7-7实验一:字符回显实验目的:掌握DOS 1号功能的调用。
实验原理:ah 里面放功能号。
用int21调用。
实验内容:code segment assume cs:code start :mov ah,1 ;功能号放入ah int 21h ;调用DOS 功能 mov ah,4ch ;返回DOS int 21h code ends end start结果分析:DOS 1号功能可以把键盘的输入回显到屏幕上。
技术支持:Michael 实验二:显示字符T实验目的:开ah=1int21h结掌握DOS 2号功能的调用。
实验原理:ah 里面放功能号。
DL 里面放要显示的字符,用int21调用。
实验内容:code segment assume cs:code start :mov dl,'T'mov ah,2 ;功能号存入int 21h ;调用 mov ah,4chint 21h code ends end start 技术支持:Michael结果分析:DOS 2 号功能可以吧 DL 中的数据按照它对应的ASK 码字符输出。
实验三:显示‘how are you ’实验目的:掌握利用DOS 功能显示字符串。
实验原理:DOS 9 号功能可以把DS :DX 中的字符串显示出来,一‘$’为结束识别。
实验内容: data segment开ah=2 int21h结DL=‘T ’message db 'How are you?',13,10,'$' data ends code segmentassume cs:code,ds:data start :mov ax,datamov ds,ax ;数据段地址给ds mov ah,9mov dx,offset message ;送入偏移地址int 21h ;功能调用mov ah,4ch int 21h code ends end start结果分析:DOS 9 号功能可以把以DS :DX 为首地址,以‘$’为结束的字符串输出。
实验报告( 2015/ 2016 学年第二学期)课程名称微型计算机原理与接口技术实验名称实验时间指导单位指导教师学院学号指导老师实验报告三、实验过程描述与结果分析汇编语言源程序编写好以后,必须经过下列几个步骤才能在机器上运行:(1) 编辑源程序(生成.ASM文件)(2) 汇编源程序(.ASM → .OBJ)(3) 目标程序(.OBJ → .EXE )(4) 调试可执行程序(使用调试程序Debug调试生成的.EXE文件)(5) 运行程序输出结果。
排除语法错误要求通过比较法完成8位二进制数转换成十进制数送屏幕显示功能的汇编语言源程序。
但有很多语法错误,要求按照原样对源程序进行编辑,汇编后,根据TASM给出的错误信息对源程序进行修改,直到没有语法错误为止,然后进行,并执行相应的可执行文件。
正确的执行结果是在屏幕上显示:25+9=34。
修改后代码:(分号后为修改);FILENAME:EXA121.ASM.486DATA SEGMENT USE16SUM DB ?,?,MESG DB '25+9= 'DB 0,0 ;DB 0,0,'$'N1 DB 9,F0H ;DB 9,0F0HNEXT: ADD [BX+8],SUM ;NEXT:MOV CL,SUMADD BYTE PTR [BX+8],CL ADD [BX+7],30H ;ADD BYTE PTR [BX+7],30HADD [BX+8],30H ;ADD BYTE PTR [BX+8],30HRETCHANG:ENDPCODE ENDSEND BEG。
汇编实验报告一、大小写字母的转换:从键盘上输入字符串含大小写字母,实现大写变小写,小写变大写。
并可以实现多次循环操作。
程序源代码:DATAS SEGMENT ;数据段定义MESSAGE DB 'Hello Welcome to the COLLECTION system!',13,10DB 'The function of the program is changing small letters to capital letters and capital letters to small letters.',13,10DB 'If you not enter as rules everything may happen.',13,10DB 'Now Please enter a string.',13,10,'$';界面里要显示输出的话CR DB 13,10,'$' ;换行回车符STRING DB 100DB 0DB 200 DUP(0) ; ;内存的开辟AGAIN DB 'Do you want to try again?(Y or N)',13,10,'$' ;界面里要显示输出的话DATAS ENDS ;数据段定义结束STACKS SEGMENT ;堆栈段定义DB 400 DUP(?);内存的开辟STACKS ENDS ;堆栈段定义结束CODES SEGMENT ;定义代码段ASSUME CS:CODES,DS:DATAS,SS:STACKS ;由ASSUME定义各段寄存器的内容START: 程序入口HEAD:MOV AX,DATASMOV DS,AX ;对DS初始化LEA DX,MESSAGE ;取地址MOV AH,09HINT 21H ;显示输出LEA DX,STRINGMOV AH,0AHINT 21H ;输入字符串LEA DX,CRMOV AH,09HINT 21H ;回车换行LEA SI,STRING+2 ;取字符串的首地址MOV CL,STRING+1 ;置入循环计数值MOV CH,0 ;高位置零NEXT1:MOV DL,[SI] ;将字符存入DLCMP DL,'A'JB NEXT2CMP DL,'z'JA NEXT2CMP DL,'a'JB NEXT3 ;分别比较,如果小于A直接跳转,大于Z也直接跳转,进行下一轮循环,小于a跳转进行加运算,否则进行减运算SUB DL,20H ;减运算NEXT2:MOV AH,02HINT 21H ;显示字符INC SIDEC CX ;计数值减一,地址值加一,以指向下一字符JNE NEXT1 ;跳回原循环MOV DX,OFFSET CRMOV AH,09HINT 21H ;回车换行JMP EXIT ;当计数值为0时,结束NEXT3:ADD DL,20H ;加运算MOV AH,02HINT 21H ;显示字符INC SIDEC CXJNE NEXT1EXIT:LEA DX,CRMOV AH,09HINT 21HLEA DX,AGAIN ;选择是否继续MOV AH,09HINT 21HMOV AH,01HINT 21HLEA DX,CRMOV AH,09HINT 21HCMP AL,'Y'JNZ OVERJMP HEADCMP AL,'y'JNZ OVERJMP HEADCMP AL,'N'JZ OVERCMP AL,'n'JZ OVER ;选择是否继续的指令OVER:INT 21H ;束指令CODES ENDSEND START;程序结束程序运行结果:二、字符串匹配程序输入一个字符串,同时输入一个需要匹配的字符,如找到显示Match,否则显示 NO match程序源代码:注:实验中相似的部分如在上一程序中注释的本程序不再详述。
实验一汇编语言基本指令操作练习一、实验目的:1、掌握8086/8088基本指令的使用方法和功能。
2、初步了解汇编语言程序设计的基本结构和利用DEBUG调试程序的方法。
3、进一步熟悉汇编语言的上机过程。
二、上机实验指导:(一)利用DEBUG的A命令输入指令,做如下实验。
1、比较下面指令的区别:①MOVAX,2000H②MOVBX,[2000H]-D2*******;显示字存储单元DS:2000的内容3ADC:20005A58ZX-R;显示指令执行前AX,BX的内容AX=0000BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000DS=3ADCES=3ADCSS=3ADCCS=3ADCIP=0100NVUPEIPLNZNAPONC3ADC:0100858CFFF3TESTCX,[SI+F3FF]DS:F3FF=74C0-A;利用A命令输入汇编指令3ADC:0100MOVAX,20003ADC:0103MOVBX,[2000]3ADC:0107INT3;此中断为断点中断,使程序执行暂停3ADC:0108-G;不指定地址,从当前CS:IP处执行AX=2000BX=585ACX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000DS=3ADCES=3ADCSS=3ADCCS=3ADCIP=0107NVUPEIPLNZNAPONC3ADC:0107CCINT3;指令执行后,AX=2000H,BX=585AH2、以寄存器BX作为地址指针,从BX所指的存储单元开始起,连续存放着两个无符号数(字操作数),编程求它们的和,并将结果存放在这两个数之后。
-RBX;显示BX寄存器中的内容(BX=0000h)BX0000:;回车-D0*******;显示DS:0000到DS:0005的内容(BX所指的三个字操作数),如BX不为0000H,自己修改范围。
汇编语言课程设计报告( 2011 -- 2012 年度第2 学期)代码转换程序专业计算机科学与技术学生姓名赵宝文班级B计算机102学号**********指导教师刘其明张静林完成日期2012年6月22日目录1 设计目的 (1)2 设计内容 (1)3 实现方式 (1)3.1 系统目标 (1)3.2 主体功能 (1)3.3 开发环境 (1)4系统概要设计 (1)4.1 系统的功能模块划分 (1)4.2 系统流程图 (2)5系统详细设计 (4)5.1 程序功能菜单模块设计 (4)小写字母向大写字母转换模块设计 (4)大写字母向小写字母转换模块设计 (5)5.4 二进制数向十六进制数转换模块设计 (5)5.5 十六进制数向二进制数转换模块设计 (5)5.6 十六进制数向十进制数转换模块设计 (6)6 测试 (6)6.1 测试方案 (6)6.2 测试结果 (7)7小结 (7)参考文献 (9)附录 (10)附录1 源程序清单 (10)附录程序功能菜单模块源程序 (10)附录小写字母向大写字母转换模块源程序 (12)附录大写字母向小写字母转换模块源程序 (13)附录二进制数向十六进制数转换模块源程序 (13)附录十六进制数向二进制数转换模块源程序 (14)附录十六进制数向十进制数转换模块源程序 (15)代码转换程序1 设计目的本课程设计是在学完教学大纲规定的全数内容、完成所有实践环节的基础上,旨在深化学生学习的汇编语言课程大体知识,进一步把握汇编语言程序设计方式,提高分析问题、解决问题的综合应用能力。
2 设计内容功能菜单的编制;小写字母向大写字母的转换;大写字母向小写字母的转换;二进制数向十六进制数的转换;十六进制数向二进制数的转换;十六进制数向十进制数的转换。
3 实现方式3.1 系统目标实现代码转换:大小写字母之间转换,二进制、十进制、十六进制之间的彼此转换。
3.2 主体功能Change1模块实现小写字母向大写字母的转换,change2模块实现大写字母向小写字母的转换。
实验报告
( 2014/ 2015 学年第二学期)
课程名称微型计算机原理与接口技术
实验名称汇编语言语法练习与代码转换
实验时间2015 年 4 月 16 日指导单位计算机学院、软件学院
指导教师韩崇
学生姓名班级学号
学院(系) 专业
实验报告
三、实验过程描述与结果分析
汇编语言源程序编写好以后,必须经过下列几个步骤才能在机器上运行:
(1) 编辑源程序(生成.ASM文件)
(2) 汇编源程序(.ASM →.OBJ)
(3) 链接目标程序(.OBJ →.EXE )
(4) 调试可执行程序(使用调试程序Debug调试生成的.EXE文件)
(5) 运行程序输出结果。
MOV [BX],AH
CALL CHANG
MOV AH,9
MOV DX,OFFSET MEST ;MOV DX,OFFSET MESG
INT 21H
MOV AH,4CH
INT 21H
CHANG:PROC
LAST: CMP [BX],10 ;LAST:CMP BYTE PTR [BX],10
JC NEXT
SUB [Bx],10 ;sub byte ptr [bx],10
INC [BX+7] ;INC BYTE PTR [BX+7]
JMP LAST
NEXT: ADD [BX+8],SUM ;NEXT:MOV CL,SUM
ADD BYTE PTR [BX+8],CL ADD [BX+7],30H ;ADD BYTE PTR [BX+7],30H
ADD [BX+8],30H ;ADD BYTE PTR [BX+8],30H
RET
CHANG:ENDP
CODE ENDS
END BEG。