微机实验.docx
- 文档编号:3622894
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:11
- 大小:512.89KB
微机实验.docx
《微机实验.docx》由会员分享,可在线阅读,更多相关《微机实验.docx(11页珍藏版)》请在冰豆网上搜索。
微机实验
微
机
原
理
实
验
报
告
(一)
班级:
自动化35
姓名:
杨帅
学号:
2130504121
说明:
运行平台:
windowsXP32位虚拟机DOS下
调试工具:
debug系列指令
代码编写:
Notepad++(有语法高亮)
Q1.设有两个8个字节长的BCD码数据bcd1和bcd2。
bcd1数以1000H为首地址在内存中顺序存放;bcd2数以2000H为首地址在内存中顺序存放。
要求将其相加后的结果按顺序存放在以2000H为首地址的内存区中。
实验思路:
可以使用LOOP循环实现加法,使用BX进行寻址和存储移位的控制。
实验代码:
Datasegment
org1000H
bcd1DB01H,03H,05H,07H,09H,0BH,0DH,0FH
org2000H
bcd2DB00H,02H,04H,06H,08H,0AH,0CH,0EH
Dataends
codesegment
assumeCS:
code,DS:
Data
start:
MOVAX,Data
MOVDS,AX
MOVCX,8
MOVBX,0H
CLC;letCF=0
L1:
MOVAL,[BX+1000H]
ADDAL,[BX+2000H]
DAA;faddadjust
MOV[BX+2000H],AL
INCBX
LOOPL1
MOVAH,4CH
INT21H
codeends
endstart
实验结果:
(图仅为部分步骤)
Q2.设从2000H为首地址的内存中存放着10个带符号的字节数据,编程找出其中最大的数,并存入2000H单元中。
实验思路:
用dl存储当前最大的值,并不断循环替换。
实验代码:
datasegment
bcddb01h,02h,03h,04h,05h,06h,07h,08h,09h,00h
dataends
codesegment
assumecs:
code,ds:
data
start:
movax,data
movds,ax
movax,code
movcs,ax
;movds:
[2000h],bcd;movebcdto2000haddress
movsi,2000h
movcx,10;numberofbyte
movdl,00h;minumumnumber
L1:
lodsb;loadanumbertoAL
cmpal,dl
jngL2;al
movdl,al;al>dl,movealtodl
L2:
loopL1
movds:
[2000h],dl
movah,4ch
int21h
codeends
endstart
实验结果:
运行前的初始状态
可以看到运行到最后一步之后,DL=09H,即数据中最大的一个。
Q3.试编写程序,统计出某数组相邻两数之间符号变化的次数。
实验思路:
实验代码:
DATASEGMENT
ARRAYDB1,-1,2,-2,3,-3,4,-4,5,-5
NUMDB0
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
LEASI,ARRAY
MOVAL,[SI];getthe1stbyte
MOVBL,0;clear
MOVCX,9;10-1
AGAIN:
INCSI
XORAL,[SI]
JNSNEXT;SF=0,samesign
INCBL
NEXT:
MOVAL,[SI]
LOOPAGAIN
MOVNUM,BL
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
实验结果:
可以看到,运行结束之后,BL=09H,即数组正负变化的次数。
Q4.试编制一程序用乘法指令实现32位二进制数和16位的相乘。
实验思路:
实验代码:
.MODELSMALL
.8086
.DATA
N1DW1234H;32位数的高位
N2DW5678H;32位数的低位
N3DW1212H;16位数字
M1DW0
M2DW0
M3DW0
.CODE
.STARTUP
MOVAX,N2
MULN3;AL和N3相乘
MOVM3,AX
MOVM2,DX
MOVAX,N3
MULN1;将N1与N3相乘
ADDM2,AX;将乘积的低16位加上之前乘积的高16位
ADCM1,DX;高16位加0
.EXIT
END
实验结果:
Q5.设有两个等字长,字节型字符串,试编写汇编程序比较它们是否完全相等,若是,则将字符Y送入AL,否则将N送入AL。
实验思路:
实验代码:
DATASEGMENT
STR1DB'XIANJIAOTONGDAXUE','$'
STR2DB'SHANGHAIJIAODAXUE','$'
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVAX,DS
MOVES,AX;prepareforCMPSB
LEASI,STR1
LEADI,STR2
MOVCX,17;numberofcharacters
REPZCMPSBSTR1,STR2
JNZNOTZ
MOVAL,'Y'
JMPRETURN
NOTZ:
MOVAL,'N'
RETURN:
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
实验结果:
可以看到,执行INT21H指令之后,AL=4EH,即字符N的ASCII值。
心得体会:
这次实验中遇到了很多的困难,比如程序出错时不知道该如何下手修改和调试,整个过程我几乎用的都是dos下的debug命令来进行调试的,也是因为没有找到更佳方便的工具和IDE。
不过辛苦之后完成了实验还是很开心的。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 实验