本文主要是介绍信工实验参考——《微机实验3》,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一般来说,我贴上来的代码都是能直接跑的,如果不行可以邮箱交流1902946954@qq.com
仅供参考,微机的老师讲的很好,所以请还是要先自己完成咯。
免责声明,本人菜只因一只,内容仅供参考,错了不负责哈。
微机实验三
一、实验目的
1、熟悉80X86基本指令集。
2、掌握汇编语言源程序的编写方法:程序结构、返回DOS的方法、段地址的初始化、存储单元的访问等。
3、掌握常用的代码转换编程。
4、掌握汇编程序的DEBUG动态调试。
二、开发环境
汇编集成开发环境、debug
三、实验题目
实验1:码制转换:将字节数据转换为ASCII码表示的二进制数,并显示输出。字节数据的值域为0~255,可转换为八位二进制数。例如:字节数据为79h,则转换为:‘01111001’
1.源代码:
datas segmentorg 2000hnum db 79Horg 2010hres db 8 dup(?),'$' datas endsCODES SEGMENTASSUME CS:CODES,DS:DATAS
START:MOV AX,DATASMOV DS,AX;代码段MOV BL,[num] ;将数据移入寄存器MOV CL,8 ;左移次数为8次MOV BH,00000001B ;清除高七位MOV SI,0 ;res的偏移
AGAIN:ROL BL,1 ;循环左移MOV CH,BL ;保护BLAND CH,BH ;清空高七位MOV AL,30H ;转换为ASCII码ADD AL,CH MOV res[SI],AL ;移入存储单元INC SIDEC CLJNE AGAINMOV AX,SEG res ;屏幕显示字符串MOV DS,AXMOV DX,OFFSET resMOV AH,9INT 21HMOV AH,4CHINT 21H
CODES ENDSEND START
2.运行截图
测试成功
3.修改数据段,再次测试
在数据段中放56H,测试
测试成功
实验二:码制转换:将字数据转换为ASCII码表示的十进制数,并显示输出。字数据的值域为0~65535,最多可转换为五位十进制数。例如:字数据为0ffffh,则转换为:‘65535’
1.源代码
datas segmentorg 2000hnum dw 65535org 2010hres db 5 dup(?),'$' datas endsSTACKS SEGMENT;此处输入堆栈段代码
STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKS
START:MOV AX,DATASMOV DS,AX;此处输入代码段代码MOV SI,0MOV AX,[num]MOV CX,10000DIV CX;AX为6,DX为5535ADD AX,30H;转为ASCII码XCHG AX,DX;互换MOV res[SI],DLINC SI;得6SUB DX,DXMOV CX,1000DIV CXADD AX,30HXCHG AX,DXMOV RES[SI],DLINC SI;得5MOV CL,100DIV CL;此时已经是字节运算,商在AL,余数在AHADD AL,30HXCHG AL,AHMOV RES[SI],AHINC SIMOV AH,0MOV CL,10DIV CLADD AL,30H ;不用再除了,所以直接把AL放十位AH放个位ADD AH,30HMOV RES[SI],ALINC SIMOV RES[SI],AHMOV AX,SEG res ;屏幕显示MOV DS,AXMOV DX, OFFSET resMOV AH,9INT 21HMOV AH,4CHINT 21H
CODES ENDSEND START
2.运行截图
测试成功
3.修改数据再次测试
在数据段放入00256
测试成功
实验三:码制转换:将字数据转换为ASCII码表示的十六进制数,并显示输出。字数据的值域为0~65535,最多可转换为四位十六进制数。例如:字数据为0ffffh,则转换为:‘FFFF’
1.源代码
data segmentorg 2000hnum dw 54A8horg 2010hres db 4 dup(?),'$'
data endsCODES SEGMENTASSUME CS:CODES,DS:data
START:MOV AX,dataMOV DS,AX;此处输入代码段代码MOV BX,[num] ;存储器移入寄存器MOV CL,4 ;一次移动4位MOV SI,0 ;偏移标志MOV CH,4 ;共循环四次
AGAIN:ROL BX,CL ;循环左移MOV AL,BL ;转到累加器AND AL,0FH ;截取低四位ADD AL,30H ;转化为ASCII码CMP AL,3AH ;判断是否大于9,如是的话要再加7变成字母对应的ASCII码JL MOVINGADD AL,7H
MOVING:MOV RES[SI],AL ;偏移,存入存储器INC SI DEC CHJNE AGAINLEA DX,res ;显示转换为十六进制后的数据MOV AH,09HINT 21HMOV AH,4CHINT 21H
CODES ENDSEND START
2.运行截图
测试成功
3.修改数据再次测试
在数据段放入5028H测试
测试成功
这篇关于信工实验参考——《微机实验3》的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!