1、功 能调 用 参 数结 果1键盘输入并回显AL=输出字符2显示单个字符(带Ctrl+Break检查)DL=输出字符光标在字符后面6显示单个字符(无Ctrl+Break检查)8从键盘上读一个字符AL=字符的ASCII码9显示字符串DS:DX=串地址,$为结束字符光标跟在串后面4CH返回DOS系统AL=返回码 例如,实现键盘输入并回显的完整代码: MOV AH 01H INT 21H三、实验结果1. 将指定数据区的字符串数据”Let us go !”以ASCII码形式显示在屏幕上,并通过DOS功能调用完成必要提示信息的显示:2. 在屏幕上显示自己的学号姓名信息四、实验原理DATA SEGMENT
2、MES DB NUMBER: 03099018 ,0AH,0DH,NAME: Feng Xiaokang$CENT DB Let us go !,ENTE DB 0AH,0DH,INFO DB Origin: ASCI DB ASCII :MSG1 DB If you want to quit please press.q/Q.MSG2 DB 0AH,0DH,Char: $RS DB ASCII:SD DB DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA ;存储数据 MOV DS,AX MOV DX,OFFSET
3、MES ;显示数据 MOV AH,09H INT 21H MOV DX,OFFSET MSG1 MOV AH,09H MOV DX, OFFSET CENT MOV SI, DX T: MOV AL,SI CMP AL, JZ C1 AND AL,0F0H ;取高4位 MOV CL,4 SHR AL,CL CMP AL,0AH ;是否是A以上的数 JB A ADD AL,07H A: ADD AL,30H MOV DL,AL ;show character MOV AH,02H INT 21H ;MOV AL,DS:SI MOV AL, SI AND AL,0FH ;取低4位 CMP AL,0
4、AH JB B ADD AL,07HB: ADD AL,30H MOV DL,AL INT 21H INC SI LOOP T C1: MOV DX,OFFSET MSG2 MOV AH,01h INT 21h CMP AL,q JE exitQ JE exit MOV SD,AL MOV DX,OFFSET RS ;show message MOV SI,OFFSET SD MOV AL,SI JB C2 C2: ADD AL,30H MOV AL,DS: JB C3C3: LOOP C1C: INT 21H LOP: MOV AH,08H INT 21H CMP AL, JMP LOPEX
5、IT: MOV AX,4C00H ;go back to dos CODE ENDSend START五、实验流程图六、实验总结 这是我学习汇编以来,第一次用汇编写程序,费了我不只一个实验课时,纠结了不只一天。同样是助记码,真的不懂如何组织的。郁闷之下,用C写出来发泄一下,才猜想应该跟C的思考方式完全不同。后来开始研究代码,真的不愧是底层啊,详细到一个字节高低位的安排,如此地考验硬件知识。实验二 数码转换实验1. 掌握不同进制数及编码相互转换的程序设计方法。2. 掌握运算类指令编程及调试方法。3. 掌握循环程序的设计方法。二、实验设备PC机一台。三、实验内容及说明1. 重复从键盘输入不超过5位
6、的十进制数,按回车键结束输入;2. 将该十进制数转换成十六进制数;结果以16进制数的形式显示在屏幕上;3. 如果输入非数字字符,则报告出错信息,重新输入;4. 直到输入“Q”或q时程序运行结束。四、实验结果 1.输入33062.结果0CEA3.输入一个较大的数655374.显示456A65. 输入非法值五、实验原理图源代码:NUMBER DB No.: FengxiaokangERROR DB 0AH,0DH,ERROR! PLEASE TRY AGAIN!INP DB 0AH,0DH,Please input a number,you can exit by inputing q or QX
7、P DB 0AH,0DH,CODE SEGMENT DATAstart: MOV AX,DATA MOV DX,OFFSET NUMBER MOV BX,0H MOV DX,OFFSET INPinput: MOV AH,01H INT 21H CMP AL,0DH ;数字输入完毕 JE change CMP AL, ;退出 JE EXIT JE EXIT CMP AL,030h ;非数字 jl errors cmp AL,039h jg errors SUB AL,30H ;运算 push AX mov AX,BX mov DX,0000AH mul DX mov BX,AX pop AX
8、add BL,AL CMP BX,00H JZ ZERO jmp inputerrors: MOV DX,OFFSET ERROR jmp inputZERO: MOV CL,4 JMP LOOPSchange: CMP BX,00H JZ ERRORSloops: MOV DX,BX AND DX,0F000H SHR DX,12 CMP DX,0AH ; JL C2 ADD DX,07H ADD DX,30H ;show chArActer SHL BX,4 LOOP loops MOV DX,OFFSET XP JMP INPUT MOV AX,4C00H END START原理十进制数可以表示为:Dn*10n+Dn-1*10n-1+D0*100= Di*10i其中Di代表十进制数1、2、3、9、0。上式可以转换为: Di*10i=(Dn*10n+Dn-1)*10+ Dn-2)*10+ D1)*10+ D0由上式可归纳出十进制数转换为二进制数的方法:从二进制数的最高位Dn开始做乘10加次位的操作。依此类推,则可求出二进制数结果。数码转换对应关系十六进制BCD码二进制机器码ASCII码七段码共阳共阴000030H40H3FH000131H79H06H001032H24H5BH3
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1