微机实验.docx
- 文档编号:23998500
- 上传时间:2023-05-23
- 格式:DOCX
- 页数:20
- 大小:16.60KB
微机实验.docx
《微机实验.docx》由会员分享,可在线阅读,更多相关《微机实验.docx(20页珍藏版)》请在冰豆网上搜索。
微机实验
1.编写完整汇编程序完成从键盘接受一个包含大、小写字母、长度不超过255字节的字符串,统计出其中的大写字母的个数存入UPPER单元。
DATASEGMENT
UPPERDB0;大写字母个数
BUFFERDB255;最大缓冲区
DB?
;输入字母个数
STRINGDB255DUP(?
);输入字母缓冲区
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
LEADX,BUFFER
MOVAH,0AH;调用DOS功能
INT21H
MOVCH,00H
MOVCL,DS:
[BUFFER+1];设置循环次数
LEASI,STRING
CHECK:
MOVAL,[SI];取字母,并判断
CMPAL,'A'
JBNEXT;小于A,next
CMPAL,'Z'
JNBENEXT;大于Z,next
CMPAL,'a';小于a
CAP:
INCUPPER;大写个数加1
NEXT:
INCSI
LOOPCHECK
INT3
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
2.设X为有符号数,如果X的绝对值大于5,则变量Y=0,如果X的绝对值不大于5,则变量Y=1-X。
编写程序片段。
DATASEGMENT
XDB?
YDB?
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
CHECK:
MOVAL,DS:
[X];取X的值,并判断X大小
CMPAL,-5
JLY0;X<-5,Y=0
CMPAL,5
JNLEY0;X>5,Y=0
MOVAH,1
SUBAH,AL;|X|<=5,Y=1-X
MOVBYTEPTRY,AH
JMPED
Y0:
MOVBYTEPTRY,0
ED:
INT3
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
1.调用DOS功能输入长度不超过255的字符串,如果字符串中包含字串“A1”则在屏幕上打印“Found”,否则打印“Notfound”。
画出流程图并依此编写出完整程序完成上述功能。
STACKSEGMENTSTACK
DW64DUP(?
)
STACKENDS
DATASEGMENT
XLDW?
XHDW?
YLDW?
YHDW?
ZLDW?
ZHDW?
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVAX,XL
ADDAX,YL
MOVZL,AX
MOVAX,XH
ADCAX,YH
MOVZH,AX
INT3
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
加:
STACKSEGMENTSTACK
DW64(?
)
STACKENDS
CODESEGMENT
ASSUMECS:
CODE
START:
MOVAH,1
INT21H
ANDAL,0FH;确定输入的数为十以内的
MOVBL,AL
MOVAH,1
INT21H
ANDAL,0FH;确定输入的数为十以内的
ANDAH,00H
ADDAL,BL
AAA
MOVBX,AX
ORBX,3030H
MOVDL,BH
MOVAH,2
INT21H
MOVDL,BL
MOVAH,2
INT21H
INT3
CODEENDS
ENDSTART
STACKSEGMENTSTACK
DW64DUP(?
)
STACKENDS
CODESEGMENT
ASSUMECS:
CODE
START:
MOVAH,1
INT21H
MOVBL,AL;AL->BL
MOVDL,'+'
MOVAH,2
INT21H
MOVAH,1
INT21H
ANDAH,00H
ADDAL,BL
AAA
MOVCX,AX
ORCX,3030H
TESTAH,01H
MOVDL,'='
MOVAH,2
INT21H
JZA1
MOVDL,CH
MOVAH,2
INT21H
A1:
MOVDL,CL
MOVAH,2
INT21H
INT3
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
减:
STACKSEGMENTSTACK
DW64(?
)
STACKENDS
CODESEGMENT
ASSUMECS:
CODE
START:
MOVAH,1
INT21H
ANDAL,0FH;确定输入的数为十以内的
MOVBL,AL
MOVAH,1
INT21H
ANDAL,0FH;确定输入的数为十以内的
CMPBL,AL
JBA0
SUBBL,AL;AL ORBL,30H AAS MOVDL,BL MOVAH,2 INT21H JMPA1 A0: SUBAL,BL;AL>BL ORAL,30H MOVBL,AL;把AL给BL AAS MOVDL,'-' MOVAH,2 INT21H MOVDL,BL MOVAH,2 INT21H A1: INT3 MOVAH,4CH INT21H CODEENDS ENDSTART STACKSEGMENTSTACK DW64DUP(? ) STACKENDS CODESEGMENT ASSUMECS: CODE START: MOVAH,1 INT21H MOVCL,AL MOVDL,'-' MOVAH,2 INT21H MOVAH,1 INT21H MOVBL,AL CMPCL,BL JBA0 SUBCL,BL MOVDL,'=' MOVAH,2 INT21H ORCL,30H MOVDL,CL MOVAH,2 INT21H JMPA1 A0: MOVDL,'=' MOVAH,2 INT21H MOVDL,'-' MOVAH,2 INT21H SUBBL,CL MOVAL,BL AAS MOVCL,AL ORCL,30H MOVDL,CL MOVAH,2 INT21H A1: INT3 MOVAH,4CH INT21H CODEENDS ENDSTARTS 乘: STACKSEGMENTSTACK DW64(? ) STACKENDS CODESEGMENT ASSUMECS: CODE START: MOVAH,1 INT21H ANDAL,0FH;确定输入的数为十以内的 MOVBL,AL MOVAH,1 INT21H ANDAL,0FH;确定输入的数为十以内的 MULBL AAM;调十进制数 MOVBX,AX ORBX,3030H;将二进制换为十进制 MOVDL,BH MOVAH,2 INT21H JMPA1 A1: MOVDL,BL MOVAH,2 INT21H INT3 MOVAH,4CH INT21H CODEENDS ENDSTART STACKSEGMENTSTACK DW64DUP(? ) STACKENDS CODESEGMENT ASSUMECS: CODE START: MOVAH,1 INT21H MOVBL,AL MOVDL,'*' MOVAH,2 INT21H MOVAH,1 INT21H MOVCL,AL ANDCL,0FH ANDBL,0FH ANDAL,0FH MOVAL,BL MULCL AAM MOVCX,AX ORCX,3030H MOVDL,'=' MOVAH,2 INT21H TESTCH,0FH JZA1 MOVDL,CH MOVAH,2 INT21H A1: MOVDL,CL MOVAH,2 INT21H INT3 MOVAH,4CH INT21H CODEENDS ENDSTART 除: STACKSEGMENTSTACK DW64(? ) STACKENDS CODESEGMENT ASSUMECS: CODE START: MOVAH,1 INT21H ANDAL,0FH;确定输入的数为十以内的 MOVBL,AL MOVAH,1 INT21H ANDAL,0FH;确定输入的数为十以内的 MOVCL,AL MOVAL,BL ANDAX,00FFH;AH位上清零,防止未用到AH位,商为零,而它又有数 DIVCL MOVBX,AX ORBX,3030H;将二进制换为十进制 MOVDL,BL MOVAH,2 INT21H MOVDL,BH MOVAH,2 INT21H INT3 MOVAH,4CH INT21H CODEENDS ENDSTART STACKSEGMENTSTACK DW64DUP(? ) STACKENDS CODESEGMENT ASSUMECS: CODE START: MOVAH,1 INT21H MOVBH,AL MOVAH,1 INT21H MOVBL,AL MOVDL,'/' MOVAH,2 INT21H MOVAH,1 INT21H MOVCL,AL ANDCL,0FH ANDCH,00H MOVAX,BX ANDAX,0F0FH AAD DIVCL MOVCX,AX ORCX,3030H MOVDL,'=' MOVAH,2 INT21H MOVDL,CL MOVAH,2 INT21H TESTCH,0FH JZA1 MOVDL,'.' MOVAH,2 INT21H MOVDL,'.' MOVAH,2 INT21H MOVDL,'.' MOVAH,2 INT21H MOVDL,CH MOVAH,2 INT21H A1: INT3 MOVAH,4CH INT21H CODEENDS ENDSTART 字符串: STACKSEGMENTSTACK DB32DUP(? ) STACKENDS DATASEGMENT MESSDB'HELLO,HOWAREYOU? ','$' DATAENDS CODESEGMENT ASSUMECS: CODE,DS: DATA START: MOVAX,DATA MOVDS,AX MOVDX,OFFSETMESS MOVAH,09H INT21H INT3 MOVAH,4CH CODEENDS ENDSTART 排序: STACKSEGMENTSTACK DW64(? ) STACKENDS CODESEGMENT ASSUMECS: CODE START: MOVAH,1 INT21H MOVBL,AL MOVAH,1 INT21H MOVCL,AL MOVAH,1 INT21H CMPAL,BL;AL>BL JBA0 MOVDL,BL MOVBL,AL MOVAL,DL JMPA0 A0: CMPAL,CL;AL>CL JBA1 MOVDL,CL MOVCL,AL MOVAL,DL JMPA1 A1: CMPBL,CL;BL>CL JBA2 MOVDL,CL MOVCL,BL MOVBL,DL JMPA2 A2: MOVDL,CL MOVAH,2 INT21H MOVDL,00H CMPAL,DL JBA4 MOVDL,'n' MOVAH,2 INT21H JMPA3 A3: ANDAH,00H ANDBH,00H ADDAL,BL ANDCH,00H ADDAX,CX AAA MOVBX,AX ORBX,3030H MOVDL,BH MOVAH,2 INT21H MOVDL,BL MOVAH,2 INT21H JMPA5 A4: MOVDL,'z' MOVAH,2 INT21H JMPA3 A5: INT3 MOVAH,4CH INT21H CODEENDS ENDSTART STACKSEGMENTSTACK DW64DUP(? ) STACKENDS DATASEGMENT ORG1000H ARRAYDB4,0,0,0,0 STR1DB'ZERO''$' STR2DB'NOZERO''$' STR3DB'00''$' DATAENDS CODESEGMENT ASSUMECS: CODE,DS: DATA START: MOVAX,DATA MOVDS,AX LEADX,DS: [1000H] MOVAH,0AH INT21H A1: MOVDL,ARRAY+2 CMPDL,ARRAY+3 JAA2 MOVDL,ARRAY+3 A2: CMPDL,ARRAY+4 JAA3 MOVDL,ARRAY+4 A3: MOVAH,2 INT21H B1: MOVDI,OFFSETARRAY+2 MOVCX,03H MOVAL,'0' CLD REPNESCASB JZFIND MOVDX,OFFSETSTR2 MOVAH,9 INT21H JMPC1 FIND: MOVDX,OFFSETSTR1 MOVAH,9 INT21H JMPC1 C1: ANDARRAY+2,0FH ANDARRAY+3,0FH ANDARRAY+4,0FH MOVAX,0 ADDAL,ARRAY+2 ADDAL,ARRAY+3 ADDAL,ARRAY+4 DAA MOVAH,AL ANDAL,0FH ADDAL,30H MOVSTR3+1,AL MOVCL,04H SHRAH,CL ANDAH,0FH ADDAH,30H MOVSTR3,AH MOVDX,OFFSETSTR3 MOVAH,9 INT21H MOVAH,4CH INT21H CODEENDS ENDSTART
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 实验