微机实验考试程序.docx

上传人:b****1 文档编号:23285127 上传时间:2023-05-15 格式:DOCX 页数:53 大小:22.57KB
下载 相关 举报
微机实验考试程序.docx_第1页
第1页 / 共53页
微机实验考试程序.docx_第2页
第2页 / 共53页
微机实验考试程序.docx_第3页
第3页 / 共53页
微机实验考试程序.docx_第4页
第4页 / 共53页
微机实验考试程序.docx_第5页
第5页 / 共53页
点击查看更多>>
下载资源
资源描述

微机实验考试程序.docx

《微机实验考试程序.docx》由会员分享,可在线阅读,更多相关《微机实验考试程序.docx(53页珍藏版)》请在冰豆网上搜索。

微机实验考试程序.docx

微机实验考试程序

实验2:

dispcMACROchar;定义宏,显示单字符

MOVDL,char

MOVAH,2

INT21h

ENDM

dataSEGMENT;定义数据段

xDB?

;定义变量x,保存第一个数

yDB?

;定义变量y,保存第二个数

CDB?

;定义变量c,保存运算符

dataENDS

codeSEGMENT;定义代码段

ASSUMECS:

code,DS:

data

go:

MOVAX,data

MOVDS,AX;段地址填装

MOVAH,2

MOVBH,0

MOVDX,0

INT10H

MOVAH,9

MOVAL,20H

MOVBL,12

MOVCX,2000

INT10H

L1:

CALLinput;接收第一个数

MOVx,AL

CALLinput

MOVBL,AL

MOVAL,10

MULx

ADDAL,BL

MOVx,AL

L2:

MOVAH,1;接收运算符

INT21H

CMPAL,'/'

JEL3

dispc8;错误处理

dispc20H

dispc8

JMPL2

L3:

MOVc,AL;保存运算符

CALLinput;接收第二个数

MOVy,AL

CALLinput

MOVBL,AL

MOVAL,10

MULy

ADDAL,BL

MOVy,AL

dispc'='

JMPL10

D1:

DISPCCL

D2:

DISPCBH

D3:

DISPCBL

JMPL12

D4:

CMPCL,'0'

JNED1

D5:

CMPBH,'0'

JNED2

JMPD3

L10:

MOVAL,x

MOVAH,0

DIVy

PUSHAX

AAM

ORAX,3030H

CMPAH,'0'

JEL9

PUSHAX

DISPCAH

POPAX

L9:

DISPCAL

POPAX

CMPAH,0

JEL12

PUSHAX

MOVCX,6

L11:

DISPC'.'

LOOPL11

POPAX

MOVAL,AH

AAM

ORAX,3030H

MOVBX,AX

JMPD5

L12:

dispc0DH;回车

dispc0Ah;换行

JMPL1

exit:

MOVAH,4Ch

INT21H;退出

inputPROC;定义子程序,接收单字符

i1:

MOVAH,1

INT21H;接收单字符

CMPAL,1Bh

JEexit;按ESC键退出

CMPAL,'0'

JAEi3

i2:

dispc8;错误处理

dispc20H

dispc8

JMPi1

i3:

CMPAL,'9'

JAi2

ANDAL,0FH;转换成数值

RET;返回

inputENDP

codeENDS

ENDgo

实验3:

 

实验4:

dispcMACROchar;定义宏,显示单字符

MOVDL,char

MOVAH,2

INT21h

ENDM

dataSEGMENT;定义数据段

xDB?

;定义变量x,保存第一个数

yDB?

;定义变量y,保存第二个数

cDB?

;定义变量c,保存运算符

dataENDS

codeSEGMENT;定义代码段

ASSUMECS:

code,DS:

data

go:

MOVAX,data

MOVDS,AX;段地址填装

MOVAH,2

MOVBH,0

MOVDX,0

INT10H

MOVAH,9

MOVAL,20H

MOVBL,12

MOVCX,2000

INT10H

L1:

CALLinput;接收第一个数

MOVx,AL

CALLinput

MOVBL,AL

MOVAL,10

MULx

ADDAL,BL

MOVx,AL

L2:

MOVAH,1;接收运算符

INT21H

CMPAL,'*'

JEL3

dispc8;错误处理

dispc20H

dispc8

JMPL2

L3:

MOVc,AL;保存运算符

CALLinput;接收第二个数

MOVy,AL

CALLinput

MOVBL,AL

MOVAL,10

MULy

ADDAL,BL

MOVy,AL

dispc'='

CMPc,'*'

JEL8

L8:

MOVAL,x

MULy

MOVDX,0

MOVBX,1000

DIVBX

MOVCH,AL;保存千位到CH中。

MOVAX,DX

MOVBL,100

DIVBL

MOVCL,AL;保存百位到CL中。

ORCX,3030H

MOVAL,AH

AAM;(AH)=十位,(AL)=个位

ORAX,3030H;转换成字符

MOVBX,AX;保存十位到BH中,个位到BL中。

CMPCH,'0'

JED4

DISPCCH

D1:

DISPCCL

D2:

DISPCBH

D3:

DISPCBL

JMPL12

D4:

CMPCL,'0'

JNED1

D5:

CMPBH,'0'

JNED2

JMPD3

L12:

dispc0DH;回车

dispc0Ah;换行

JMPL1

exit:

MOVAH,4Ch

INT21H;退出

inputPROC;定义子程序,接收单字符

i1:

MOVAH,1

INT21H;接收单字符

CMPAL,1Bh

JEexit;按ESC键退出

CMPAL,'0'

JAEi3

i2:

dispc8;错误处理

dispc20H

dispc8

JMPi1

i3:

CMPAL,'9'

JAi2

ANDAL,0FH;转换成数值

RET;返回

inputENDP

codeENDS

ENDgo

实验5:

DISPCMACROC;显示单字符

MOVDL,C

MOVAH,2

INT21H

ENDM;定义宏

DATASEGMENT

XDB'1234567890';定义变量X

YDB'1122334455';定义变量Y

CEQU10;计算长度

ZDBC+1DUP(0);保存运算结果

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,ES:

DATA;段说明

GO:

MOVAX,DATA

MOVDS,AX

MOVES,AX;段地址填装

LEASI,X;减法

LEADI,Y;从最高位比较X,Y的大小

MOVCX,C

CLD

L5:

LODSB;(AL)<=((DS):

(SI))

CMPAL,[DI];XY比较

JAL6;无符号比较

JBL7

INCDI

LOOPL5

DISPC'0'

JMPL10

L6:

LEASI,X+C-1;初始化地址指针SI到X尾

LEABX,Y+C-1;初始化地址指针BX到Y尾

JMPL8

L7:

DISPC'-'

LEASI,Y+C-1

LEABX,X+C-1

L8:

LEADI,Z+C;初始化地址指针DI到Z尾

STD;地址减量变化

CLC;CF=0

MOVCX,C;置循环次数到CX

L9:

LODSB;(AL)<=((DS):

(SI))

SBBAL,[BX];X-Y

AAS

DECBX;由高位到低位

STOSB;存串

LOOPL9

MOVCX,C+1

LEABX,Z

L11:

MOVDL,[BX]

ORDL,30H;将数值转换成字符

MOVAH,2

INT21H

INCBX

LOOPL11

L10:

MOVAH,7;等待语句

INT21H

MOVAH,4CH

INT21H

CODEENDS

ENDGO

实验6:

DISPCMACROC;定义显示单字符的宏

MOVDL,CH

MOVAH,2

INT21H

ENDM

X_YMACROX,Y;定义置光标的宏

MOVAH,2

MOVBH,0

MOVDH,X

MOVDL,Y

INT10H

ENDM

DISPSMACROS;定义显示字符串的宏

MOVAH,9

LEADX,S

INT21H

ENDM

DATASEGMENT

XDB60DUP(0),'$';'$'为显示结束符

YDB60DUP(0),'$'

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

GO:

MOVAX,DATA

MOVDS,AX;填装段地址

MOVAH,2;清屏

MOVBH,0

MOVDX,0

INT10H

MOVAH,9

MOVAL,20H

MOVBL,12H

MOVCX,2000

INT10H

X_Y6,0;置光标于6行0列

LEABX,Y;初始化地址

LEASI,X

MOVCX,60;初始化长度

L1:

MOVAH,1

INT21H;接收单字符

CMPAL,'A'

JAEL3;无符号比较,若大于等于转移

L2:

CALLERROR;调用子程序

JMPL1

L3:

CMPAL,'Z'

JBEL4

CMPAL,'a'

JBL2

CMPAL,'z'

JAL2;判断是否为字母

JMPL5

L4:

ADDAL,20H;将大写字母转换成小写字幕

L5:

MOV[SI],AL;保存

INCSI;地址增量变化

LOOPL1

X_Y10,0;置光标于10行0列

DISPSX;显示大小写转换后的字符串

MOVAH,7

INT21H;等待

MOVAH,4CH

INT21H;退出

ERRORPROC

DISPC8

DISPC20H

DISPC8;错误处理

DISPC7;置响铃

RET;返回

ERRORENDP

CODEENDS

ENDGO

 

实验7;

DISPCMACROC;定义显示单字符的宏

MOVDL,Ch

MOVAH,2

INT21H

endm

X_YMACROX,Y;定义置光标的宏

MOVAH,2

MOVBH,0

MOVDH,X

MOVDL,Y

INT10H

ENDM

DISPSMACROS;定义显示字符串的宏

MOVAH,9

LEADX,S

INT21H

ENDM

DATASEGMENT

XDB80DUP(0),'$';'$'为显示结束符

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

GO:

MOVAX,DATA

MOVDS,AX;填装段地址

X_Y8,0;置光标于8行0列

LEASI,X;初始化地址

MOVCX,80;初始化长度

L1:

MOVAH,1

INT21H;接收单字符

CMPAL,'A'

JAEL3;无符号比较,若大于等于转移

cmpal,'0'

jael4;大于等于转l4

L2:

CALLERROR;调用子程序

JMPL1

L3:

CMPAL,'Z'

JBEL6

CMPAL,'a'

JBL2;低于转l2

CMPAL,'z'

jbel6

jmpl2

l4:

cmpal,'9'

jbel5

cmpal,'A'

jbl2

jmpl3

L5:

andal,20h;数字转换为空格

l6:

MOV[SI],AL;保存

INCSI;地址增量变化

LOOPL1

X_Y10,0;置光标于10行0列

DISPSX;显示转换后的字符串

MOVAH,7

INT21H;等待

MOVAH,4CH

INT21H;退出

errorproc

dispc8

dispc20h

dispc8;错误处理

dispc7;置响铃

ret;返回

errorendp

codeends

endgo

 

实验8:

DISPCMACROC;定义显示单字符的宏

MOVDL,Ch

MOVAH,2

INT21H

endm

X_YMACROX,Y;定义置光标的宏

MOVAH,2

MOVBH,0

MOVDH,X

MOVDL,Y

INT10H

ENDM

DISPSMACROS;定义显示字符串的宏

MOVAH,9

LEADX,S

INT21H

ENDM

DATASEGMENT

XDB80DUP(0),'$';'$'为显示结束符

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

GO:

MOVAX,DATA

MOVDS,AX;填装段地址

MOVAH,2;清屏

MOVBH,0

MOVDX,0

INT10H

MOVAH,9

MOVAL,20H

MOVBL,12H

MOVCX,2000

INT10H

X_Y7,0;置光标于6行0列

LEASI,X;初始化地址

MOVCX,80;初始化长度

L1:

MOVAH,1

INT21H;接收单字符

CMPAL,'A'

JAEL3;无符号比较,若大于等于转移

L2:

CALLERROR;调用子程序

JMPL1

L3:

CMPAL,'z'

JAL2;判断是否为字母

L4:

MOV[SI],AL;保存

INCSI;地址增量变化

LOOPL1

L5:

LEASI,X

MOVCX,79;置长度

MOVDL,0

L6:

MOVAL,[SI]

CMPAL,[SI+1]

JAEL7;大于或等于转L7

XCHGAL,[SI+1];互换内容

MOV[SI],AL

MOVDL,1

L7:

INCSI

LOOPL6

CMPDL,1

JEL5

X_Y11,0;置光标于11行0列

DISPSX;显示最终的字符串

MOVAH,7

INT21H;等待

MOVAH,4CH

INT21H;退出

errorproc

dispc8

dispc20h

dispc8;错误处理

dispc7;置响铃

ret;返回

errorendp

codeends

endgo

实验9:

DISPCMACROC;定义显示单字符的宏

MOVDL,Ch

MOVAH,2

INT21H

endm

X_YMACROX,Y;定义置光标的宏

MOVAH,2

MOVBH,0

MOVDH,X

MOVDL,Y

INT10H

ENDM

DISPSMACROS;定义显示字符串的宏

MOVAH,9

LEADX,S

INT21H

ENDM

DATASEGMENT

XDB80DUP(0),'$';'$'为显示结束符

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

GO:

MOVAX,DATA

MOVDS,AX;填装段地址

MOVAH,2;清屏

MOVBH,0

MOVDX,0

INT10H

MOVAH,9

MOVAL,20H

MOVBL,12H

MOVCX,2000

INT10H

X_Y6,0;置光标于6行0列

LEASI,X;初始化地址

MOVCX,80;初始化长度

L1:

MOVAH,1

INT21H;接收单字符

CMPAL,'A'

JAEL3;无符号比较,若大于等于转移

L2:

CALLERROR;调用子程序

JMPL1

L3:

CMPAL,'z'

JAL2;判断是否为字母

L4:

MOV[SI],AL;保存

INCSI;地址增量变化

LOOPL1

L5:

LEASI,X

movcx,79;置长度

movDL,0

L6:

moval,[si]

cmpal,[si+1]

JBEL7

XCHGAL,[SI+1];互换内容

MOV[SI],AL

MOVDL,1

L7:

INCSI

loopL6

cmpDL,1

JEL5

X_Y9,0;置光标于9行0列

DISPSX;显示最终的字符串

MOVAH,7

INT21H;等待

MOVAH,4CH

INT21H;退出

errorproc

dispc8

dispc20h

dispc8;错误处理

dispc7;置响铃

ret;返回

errorendp

codeends

endgo

实验10:

dispsmacrox

movah,9

leadx,x

int21h

endm

datasegment

bufferdb80,?

81dup(0)

fnamedb'D:

\STRING.TXT',0

d1db'Createpaperfileerror',0dh,0ah,'$'

d2db'Createfileerror',0ah,0dh,'$'

d3db'Writefileerror',0ah,0dh,'$'

d4db'Closefileerror',0ah,0dh,'$'

d5db'Operatesucceed',0ah,0dh,'$'

d6db0ah,0dh,'$'

dataends

codesegment

assumecs:

code,ds:

data

go:

movax,data

movds,ax

movah,2

movbh,0

movdx,0

int10h

moval,20h

movah,9

movcx,2000

movbl,12h

int10h;清屏

movah,2

movbh,0

movdh,5;置光标位置于5行

movdl,0;置光标位置于0列

int10h

 

movah,0ah

leadx,buffer

int21h

movcl,buffer+1

movch,0

leasi,buffer+2

l1:

lodsb;取下一个源串中的值

cmpal,'a'

jbm2

cmpal,'z'

jam2

xoral,20h;将小写字母转换成大写字母

mov[si-1],al;将转换后的字符存入[SI-1]中

m2:

loopl1

movbyteptr[si],'$'

movah,2

movbh,0

movdh,7;将光标置于10行

movdl,0;将光标置于0列

int10h

dispsbuffer+2

dispsd6;显示转换后的字符

l2:

movah,5bh;建立新文件

movcx,0

leadx,fname

int21h

jncl3;成功转l3

dispsd2;错误显示d2

jmpl6;无条件转l6

l3:

MOVBX,AX

LEADX,buffer+2

movcx,80

movah,40h;文件写入

int21h

jncl4;成功转l4

dispsd3;错误显示d3

jmpl6;无条件转l6

l4:

movah,3eh;关闭文件

int21h

jncl5

dispsd4

jmpl6

l5:

dispsd5;显示D5

l6:

movah,7

int21h

movah,4ch

int21h

codeends

endgo

实验11:

dispsmacrox

movah,9

leadx,x

int21h

endm

datasegment

bufferdb80,?

81dup(0)

fnamedb'D:

\USER.TXT',0

d1db'Createpaperfileerror',0dh,0ah,'$'

d2db'Createfileerror',0ah,0dh,'$'

d3db'Writefileerror',0ah,0dh,'$'

d4db'Closefileerror',0ah,0dh,'$'

d5db'Operatesucceed',0ah,0dh,'$'

d6db0ah,0dh,'$'

dataends

codesegment

assumecs:

code,ds:

data

go:

movax,data

movds,ax

movah,2

movbh,0

movdx,0

int10h

moval,20h

movah,9

movcx,2000

movbl,12h

int10h;清屏

movah,2

movbh,0

movdh,8;置光标位置于8行

movdl,0;置光标位置于0列

int10h

movah,0ah

leadx,buffer

int21h

movcl,buffer+1

movch,0

leasi,buffer+2

l1:

lodsb;取下一个源串中的值

cmpa

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > 从业资格考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1