微机原理上机实验答案.docx
- 文档编号:4666195
- 上传时间:2022-12-07
- 格式:DOCX
- 页数:39
- 大小:22.31KB
微机原理上机实验答案.docx
《微机原理上机实验答案.docx》由会员分享,可在线阅读,更多相关《微机原理上机实验答案.docx(39页珍藏版)》请在冰豆网上搜索。
微机原理上机实验答案
实验01A
将FFFFH送到AX,BX,CX,DX,SI,DI,BP寄存器
程序如下:
CODESEGMENT
ASSUMECS:
CODE
STARTPROCFAR
STT:
PUSHDS
SUBAX,AX
PUSHAX
;==============================
MOVAX,0FFFFH
MOVBX,AX
MOVCX,AX
MOVDX,AX
MOVSI,AX
MOVDI,AX
MOVBP,AX
;==============================
RET
STARTENDP
CODEENDS
ENDSTT
实验01B
将FFH送到内存1000H,1001H,1002H,1003H,1004H单元中
程序如下:
DATASEGMENT
ORG1000H
H1DB5DUP(?
)
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
STARTPROCFAR
STT:
PUSHDS
SUBAX,AX
PUSHAX
;==============================
MOVAL,0FFH
MOVDI,1000H
MOVCX,5;循环5次
LP1:
MOV[DI],AL;FF放入1000H-1004H中
INCDI
DECCX
JNZLP1
;==============================
RET
STARTENDP
CODEENDS
ENDSTT
实验02A
编写一个加法程序,在数据段偏移地址1000H处开始,存放有两个3字节长的数据(高位对应高地址,低位对应低地址),求这两数据(十六进制数)的和,并将结果放在两数据之后,利用DEBUG调试程序,并求解:
CCBBAAH+223344H=?
CCBBAA+554433H=?
程序如下:
DATASEGMENT
ORG1000H
H1DB10DUP(?
)
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
STARTPROCFAR
STT:
PUSHDS
SUBAX,AX
PUSHAX
Movax,dseg
Movds,ax
;==============================
MOVSI,1000H
;不带最高位进位的全加器
MOVDI,1003H
MOVBX,1006H
MOVCX,3
CLC
AA:
MOVAL,[SI]
ADCAL,[DI]
MOV[BX],AL
PUSHF
;保护FR,这里其实没有必要,因为INC不会产生进位
INCSI
INCDI
INCBX
POPF
LOOPAA
MOVDL,0;最高位进位
ADCDL,0
MOVDI,1009H
MOV[DI],DL
;==============================
RET
STARTENDP
CODEENDS
ENDSTT
实验02B
用串传送指令把A程序的数据块(被加数、加数、和)偏移地址1000H开始的区域传递到同一数据段的偏移地址为1010H开始的区域,并利用DEBUG查看运行结果
程序如下:
DATASEGMENT
ORG1000H
H1DB20DUP(?
)
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
STARTPROCFAR
STT:
PUSHDS
SUBAX,AX
PUSHAX
;==============================
MOVAX,DS;使ES段地址与DS相同
MOVES,AX
MOVSI,1000H
;不带最高位进位的全加器
MOVDI,1003H
MOVBX,1006H
MOVCX,3
CLC
AA:
MOVAL,[SI]
ADCAL,[DI]
MOV[BX],AL
PUSHF
;保护FR,这里其实没有必要,因为INC不会产生进位
INCSI
INCDI
INCBX
POPF
LOOPAA
MOVDL,0;最高位进位
ADCDL,0
MOVDI,1009H
MOV[DI],DL
MOVSI,1000H;串传送
MOVDI,1010H
MOVCX,5
CLD
REPMOVSW;一次传送一个字
;==============================
RET
STARTENDP
CODEENDS
ENDSTT
实验02C,选作
编写一个两位十进制数加法程序,当从键盘上输入:
n1n2+n3n4则在CRT上显示n1n2+n3n4=n5n6
程序如下:
DATASEGMENT
H1DB"Theaddendsallmustbetwofigures,insufficientadds0infront.",13,10,'$'
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
STARTPROCFAR
STT:
PUSHDS
SUBAX,AX
PUSHAX
;==============================
MOVAX,DATA
MOVDS,AX
LEADX,H1;打印注释:
加数和被加数都必须为两位数,不够的前面补0
MOVAH,09H
INT21H
SUBCX,CX;CX清零
SUBDX,DX;DX清零
CLC;清CF
MOVAH,1;输入第1个数
INT21H
MOVCH,AL;放入CH
SUBCH,30H;ASCII码调整
INT21H;输入第2个数
MOVCL,AL;放入CL
SUBCL,30H;ASCII码调整
MOVAH,2;打印加号
MOVDL,2BH
INT21H
MOVAH,1;输入第3个数
INT21H
MOVDH,AL;放入DH
SUBDH,30H;ASCII码调整
INT21H;输入第4个数
MOVDL,AL;放入DL
SUBDL,30H;ASCII码调整
ADDCL,DL;ASCII码个位加法
CMPCL,10;比较个位数结果是否大于10
JNCAA;大于等于10则跳至AA
ADDCH,DH;个位不向十位进位的十位加法
JMPBB
AA:
ADDCH,DH;个位向十位有进位的十位加法
ADDCH,1
SUBCL,10
BB:
MOVDL,3DH;打印等号
MOVAH,2
INT21H
CMPCH,10;比较十位数结果是否大于10
JNCCC
MOVDL,0;打印十位不向百位进位的百位=0
INT21H
JMPCCC
CC:
MOVDL,31H;打印十位向百位进位的百位=1
INT21H
SUBCH,10
CCC:
ADDCH,30H;ASCII码调整
MOVDL,CH;打印结果中的十位
INT21H
ADDCL,30H;ASCII码调整
MOVDL,CL;打印结果中的个位
INT21H
MOVAH,1;暂停
INT21H
;==============================
RET
STARTENDP
CODEENDS
ENDSTT
实验03A
在数据段偏移地址0100H处开始,存放0-9的平方值(构成一个表格),任给一个自然数M在0110H单元中(0<=M<=9),查表求出M的平方值,并将结果放入0111H单元。
程序如下:
DATASEGMENT
ORG0100H
H1DB00,01,04,09,16,25,36,49,64,81
ORG0110H
H2DB7,?
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
STARTPROCFAR
STT:
PUSHDS
SUBAX,AX
PUSHAX
;==============================
MOVAX,DATA
MOVDS,AX
MOVSI,OFFSETH2
MOVAL,[SI]
MOVBX,OFFSETH1
XLAT
INCSI
MOV[SI],AL
;==============================
RET
STARTENDP
CODEENDS
ENDSTT
实验03B
从内存1000H开始,建立19个自然递增然后又递减的数据串(0-9-0),用DEBUG查看运行结果。
程序如下:
DATASEGMENT
ORG1000H
H1DB20DUP(?
)
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
STARTPROCFAR
STT:
PUSHDS
SUBAX,AX
PUSHAX
;==============================
MOVSI,OFFSETH1
MOVDI,OFFSETH1
ADDDI,12H
MOVAL,0
MOVCX,10
AA:
MOV[SI],AL
MOV[DI],AL
INCSI
DECDI
INCAL
LOOPAA
;==============================
RET
STARTENDP
CODEENDS
ENDSTT
实验03C,选作
在数据段偏移地址1000H处,安排部分七段LED显示码表,要求从键盘上任给一个0~F中的数,然后再屏幕上显示出其对应的码值。
七段共阴极LED显示码表见实验册P14。
程序如下:
DATASEGMENT
ORG1000H
H1DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H
H2DB1DUP(?
)
TIPDB13,10,"TheinputnumbermustbeaHEX(0~F),press
ERRDB13,10,"TheinputnumbermustbeaHEX(0~F).",13,10,'$'
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
STARTPROCFAR
STT:
PUSHDS
SUBAX,AX
PUSHAX
;==============================
MOVAX,DATA
MOVDS,AX
LEADX,TIP;打印TIP信息
MOVAH,09H
INT21H
BEGIN:
MOVDL,13;打印换行
MOVAH,2
INT21H
MOVDL,10;打印回行首
INT21H
MOVAH,1;等待从键盘输入
INT21H
MOVSI,OFFSETH2;保护输入
MOV[SI],AL
CMPAL,27;如果按下
JZQUIT
CALLDISPLAY0;调用DISPLAY0子程序
CALLASCII2HEX;调用ASCII2HEX子程序
CMPAL,0FFH;如果AL不等于FF(出错码)则跳至CORRECT
JNZCORRECT
LEADX,ERR;打印错误信息
MOVAH,09H
INT21H
JMPFINISH;跳至FINISH
CORRECT:
MOVBX,OFFSETH1;查表
XLAT
MOVAH,0
MOVBX,0
MOVBL,AL;分离AL的高4位和低4位,分离后AL中为高4位,BL中为低4位
ANDAL,0F0H
MOVCL,4
SHRAL,CL
ANDBL,0FH
CALLHEX2ASCII;调用HEX2ASCII
CALLDISPLAY;调用DISPLAY子程序
MOVAL,BL
CALLHEX2ASCII
CALLDISPLAY
MOVDL,72;打印字母"H"
MOVAH,2
INT21H
JMPFINISH
QUIT:
CALLESCAPE;调用ESCAPE子程序
FINISH:
JMPBEGIN
;==============================
RET
STARTENDP
ASCII2HEXPROCNEAR
CMPAL,30H;ASCII转16进制子程序
JBERROR;如果AL<0则跳至ERROR
CMPAL,39H
JBENUMBER;如果AL<=9则跳至NUMBER
CMPAL,46H
JAERROR;如果AL>F则跳至ERROR
SUBAL,07H
NUMBER:
SUBAL,30H
JMPDONE
ERROR:
MOVAL,0FFH
DONE:
RET
ASCII2HEXENDP
HEX2ASCIIPROCNEAR
CLC;16进制转ASCII子程序
DAA
ADDAL,0F0H
ADCAL,40H
RET
HEX2ASCIIENDP
DISPLAYPROCNEAR
PUSHDX;显示结果子程序
MOVDL,AL
MOVAH,2
INT21H
POPDX
RET
DISPLAYENDP
DISPLAY0PROCNEAR
PUSHAX;该子程序打印输入及":
"
PUSHDX
PUSHF
MOVDL,13
MOVAH,2
INT21H
MOVDL,10
INT21H
MOVDL,[SI];打印输入
INT21H
MOVDL,58;打印":
"
INT21H
POPF
POPDX
POPAX
RET
DISPLAY0ENDP
ESCAPEPROCNEAR
MOVAH,4CH;返回操作系统子程序
INT21H
RET
ESCAPEENDP
CODEENDS
ENDSTT
实验04A
把BX中的“1”的个数放到AL中,并在屏幕上显示“1”的个数。
程序如下:
CODESEGMENT
ASSUMECS:
CODE
STARTPROCFAR
STT:
PUSHDS
SUBAX,AX
PUSHAX
;==============================
CLC
MOVAX,0
MOVDX,0
MOVBX,000FH
MOVCX,16
CHECK:
SHLBX,1
ADCDL,0
CMPDL,1
JZCOUNT
CONTINUE:
LOOPCHECK
JMPFINISH
COUNT:
ADDAL,1
DAA
CLC
MOVDX,0
JMPCONTINUE
FINISH:
MOVAH,0
MOVBX,0
MOVBL,AL;分离AL的高4位和低4位,分离后AL中为高4位,BL中为低4位
ANDAL,0F0H
MOVCL,4
SHRAL,CL
ANDBL,0FH
CALLHEX2ASCII;调用HEX2ASCII
CALLDISPLAY;调用DISPLAY子程序
MOVAL,BL
CALLHEX2ASCII
CALLDISPLAY
;==============================
RET
STARTENDP
HEX2ASCIIPROCNEAR
CLC;16进制转ASCII子程序
DAA
ADDAL,0F0H
ADCAL,40H
RET
HEX2ASCIIENDP
DISPLAYPROCNEAR
PUSHDX;显示结果子程序
MOVDL,AL
MOVAH,2
INT21H
POPDX
RET
DISPLAYENDP
CODEENDS
ENDSTT
实验04B,选作
编写程序在CRT上显示图形(图形见实验册P17)。
程序如下:
CODESEGMENT
ASSUMECS:
CODE
STARTPROCFAR
STT:
PUSHDS
SUBAX,AX
PUSHAX
;==============================
MOVBL,14H
MOVBH,1
MOVCX,0AH
LP:
PUSHBX
CALLSPACE
CALLSTAR
CALLCRLF
POPBX
DECBL
ADDBH,2
LOOPLP
;==============================
RET
STARTENDP
SPACEPROCNEAR
;打印空格子程序
PUSHCX
MOVCX,0
MOVAH,2
MOVDL,32
MOVCL,BL
LP1:
INT21H
LOOPLP1
POPCX
RET
SPACEENDP
STARPROCNEAR
;打印"*"子程序
PUSHCX
MOVCX,0
MOVDL,2AH
MOVAH,2
MOVCL,BH
LP2:
INT21H
LOOPLP2
POPCX
RET
STARENDP
CRLFPROCNEAR
;回车换行子程序
MOVDL,13
MOVAH,2
INT21H
MOVDL,10
INT21H
RET
CRLFENDP
CODEENDS
ENDSTT
实验04C,选作
自动生成1至99BCD数并送屏幕显示,显示格式见实验册P19。
程序如下:
CODESEGMENT
ASSUMECS:
CODE
STARTPROCFAR
STT:
PUSHDS
SUBAX,AX
PUSHAX
;==============================
MOVBL,16
MOVAL,0
CALLPRINT
CALLCRLF
;==============================
RET
STARTENDP
PRINTPROCNEAR
;打印数字子程序
MOVAH,2
MOVDH,1
MOVCX,10
MOVBH,30H
LP2:
PUSHCX
MOVCX,10
MOVBL,30H
LP0:
CMPBH,30H
JZAA
JMPBB
AA:
CMPBL,30H
JZCON
BB:
MOVDL,BH
INT21H
MOVDL,BL
INT21H
CALLSPACE
CON:
INCBL
LOOPLP0
INCBH
POPCX
LOOPLP2
RET
PRINTENDP
SPACEPROCNEAR
;打印空格子程序
PUSHCX
MOVCX,0
MOVAH,2
MOVDL,32
MOVCL,2
LP1:
INT21H
LOOPLP1
INCDH
CMPDH,17
JZKK
JMPLL
KK:
CALLCRLF
MOVDH,1
LL:
POPCX
RET
SPACEENDP
CRLFPROCNEAR
;回车换行子程序
MOVDL,13
MOVAH,2
INT21H
MOVDL,10
INT21H
RET
CRLFENDP
CODEENDS
ENDSTT
实验05A
从首地址为BUF开始存放10个数(单字节无符号数),从这些数种找出最大值,存入MAX中,并显示到屏幕上。
程序如下:
DATASEGMENT
ORG1000H
BUFDB1H,2H,3H,4H,9H,5H,6H,0EH,8H,7H
ORG1020H
MAXDB1DUP(?
)
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
STARTPROCFAR
STT:
PUSHDS
SUBAX,AX
PUSHAX
;==============================
MOVAX,DATA
MOVDS,AX
CALLCHAMAX
CALLHEX2ASCII
MOVDL,AL
MOVAH,2
INT21H
;==============================
RET
STARTENDP
CHAMAXPROCNEAR
MOVSI,OFFSETBUF
MOVAL,[SI]
MOVCX,9
INCSI
F0:
CMPAL,[SI]
JGEF1
MOVAL,[SI]
F1:
INCSI
LOOPF0
MOVDI,OFFSETMAX
MOV[DI],AL
RET
CHAMAXENDP
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 上机 实验 答案