十进制转换十六进制程序设计
1.谈谈你对本课程学习过程中的心得体会与建议?
在学汇编的过程中,最重要的就是要掌握汇编语言中的指令的一些基本用法。当然要能够真正的了解其中的内涵,这样在实际的编程中也能够像运用高级语言一样灵活的变通。汇编语言作为一种低级程序设计语言,既然是低级所以应该是最底层的,与计算机内部的结构联系应该联系很密切,而且我在学习中也深刻的了解到了这一点。比如说后来学到的寄存器、中断、还要各种寻址方式以及进栈出栈,好多的就是设计到计算机硬件。
汇编程序给人感觉最烦的就是好多程序的结果不能直接通过运行EXE文件显示出来,而更多的是经过DEBUG单步调试才能看到其内在变化,看是否正确。汇编程序不像其他的高级语言一样需要编译器,而是直接的就能在记事本上编写,然后进行汇编和连接就可以了。学习汇编调试,关键就是要掌握DEBUG的运用。汇编程序把汇编语言翻译成机器语言的过程称为汇编。是一种功能很强的程序设计语言,也是利用计算机所有硬件特性并能直接控制硬件的语言。比机器语言易于读写、调试和修改,同时具有机器语言全部优点。但在编写复杂程序时,相对高级语言代码量较大,而且汇编语言依赖于具体的处理器体系结构,不能通用,因此不能直接在不同处理器体系结构之间移植。
一开始,我对PC的寻址方式和很不理解。这方面的知识是很抽象的,需要比较强的空间想象能力。尤其
是我们在输入字符串时,那这些字符是如何进行排列的呢。对于这个问题,我相信很多人也和我一样很难想象。汇编语言的寻址方式有直接寻址,寄存器寻址,基址变址寻址,相对基址变址寻址等等,掌握这些都是编写汇编程序很重要的环节。
我认为汇编语言本身还是一门很重要的应用技术。在学习过程中,我常常上网搜索资料辅助理解,遇到难以理解的问题时也学会自己解决,我想这不仅是知识层面上的提升,更是自己在学习能力上的提升。
2.《汇编语言程序设计》课程设计,从以下5个题目中任选其一作答。题目一:十进制转换十六进制程序设计
一、算法思路
采用一个子程序DECIBIN实现从键盘取得十进制数并把它转换为二进制数;另一个子程序BINIHEX把此二进制数以十六进制数的形式在屏幕上显示出来。为避免屏幕上的重叠,另外用CRLF子程序取得回车和换行效果。各个子程序之间用BX寄存器来传送信息。在过程DECIBIN中取得的输入数据转换为二进制数后保存在BX寄存器中,而过程BINIHEX需要把BX寄存器中的数用十六进制形式显示出来。
二、算法程序框图
开始
调用DECIBIN 调用CRLF 调用BINIHEX 调用CRLF
从键盘取得十进制
数,保存在BX中显示回车和换行用十六进制数形式表达显示BX中的数
ASSUME CS:DECIHEX
MAIN PROC FAR ; 主程序
REPEAT: CALL DECIBIN ; 调用子程序输入十进制数
CALL CRLF ; 显示回车、换行
CALL BINIHEX ; 以十六进制数输出
CALL CRLF ; 显示回车、换行
JMP REPEAT ; 转REPEA T,继续
MAIN ENDP
DECIBIN PROC NEAR ; 十进制数输入子程序
MOV BX, 0 ; BX保存输入数
NEWCHAR: MOV AH, 1
INT 21H ; 调用DOS功能输入字符
SUB AL, 30H ; 转为数0-9
JB EXIT ; 小于0,不是数字
CMP AL, 9D ; 与9比较
JA EXIT ; 大于,不是数字
CBW ; AL=>AX
XCHG AX, BX ; AX、BX互换
MOV CX, 10D ; CX=10编程语言翻译
MUL CX ; AX=AX*CX
ADD BX, AX ; BX为前面输入的结果
JMP NEWCHAR
EXIT: RET
DECIBIN ENDP
BINIHEX PROC NEAR
MOV CH, 4 ; CH循环次数
ROTA TE: MOV CL, 4 ;每次循环输出一位十六进制数ROL BX, CL ; 即移位4个二进制位
MOV AL, BL ; AL=BL
AND AL, 0FH ; 取低4位
ADD AL, 30H ; 转变为ASCII码
CMP AL, 3AH ; 是否为’0’-‘9’
JL PRINTIT ; 是转PRINTIT
ADD AL, 7H ; 否转为’A’-‘F’PRINTIT: MOV DL, AL ; DL=输出字符MOV AH, 2
INT 21H ;调用DOS中断,显示字符DEC CH
JNZ ROTA TE ; 没循环结束,继续RET ; 返回
BINIHEX ENDP
CRLF PROC NEAR ; 输出回车、换行MOV DL, 0DH
MOV AH, 2
INT 21H ; 输出回车
MOV DL, 0AH MOV AH, 2
INT 21H ; 输出换行
RET
CRLF ENDP
DECIHEX ENDS
END MAIN
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论