




已阅读5页,还剩27页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
内蒙古工业大学内蒙古工业大学微型计算机原理及应用实验参考汇编程序实验01A将FFFFH送到AX,BX,CX,DX,SI,DI,BP寄存器程序如下:CODE SEGMENTASSUME CS:CODESTART PROC FARSTT:PUSH DSSUB AX,AXPUSH AX;=MOV AX,0FFFFHMOV BX,AXMOV CX,AXMOV DX,AXMOV SI,AXMOV DI,AXMOV BP,AX;=RETSTART ENDPCODE ENDSEND STT实验01B将FFH送到内存1000H,1001H,1002H,1003H,1004H单元中程序如下:DATA SEGMENTORG 1000HH1 DB 5 DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART PROC FARSTT:PUSH DSSUB AX,AXPUSH AX;=MOV AL,0FFHMOV DI,1000HMOV CX,5;循环5次LP1:MOV DI,AL;FF放入1000H-1004H中INC DIDEC CXJNZ LP1;=RETSTART ENDPCODE ENDSEND STT实验02A编写一个加法程序,在数据段偏移地址1000H处开始,存放有两个3字节长的数据(高位对应高地址,低位对应低地址),求这两数据(十六进制数)的和,并将结果放在两数据之后,利用DEBUG调试程序,并求解:CCBBAAH+223344H=?CCBBAA+554433H=?程序如下:DATA SEGMENTORG 1000HH1 DB 10 DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART PROC FARSTT:PUSH DSSUB AX,AXPUSH AXMovax,dsegMovds,ax;=MOV SI,1000H;不带最高位进位的全加器MOV DI,1003HMOV BX,1006HMOV CX,3CLCAA: MOV AL,SIADC AL,DIMOV BX,ALPUSHF;保护FR,这里其实没有必要,因为INC不会产生进位INC SIINC DIINC BXPOPFLOOP AAMOV DL,0;最高位进位ADC DL,0MOV DI,1009HMOV DI,DL;=RETSTART ENDPCODE ENDSEND STT实验02B用串传送指令把A程序的数据块(被加数、加数、和)偏移地址1000H开始的区域传递到同一数据段的偏移地址为1010H开始的区域,并利用DEBUG查看运行结果程序如下:DATA SEGMENTORG 1000HH1 DB 20 DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART PROC FARSTT:PUSH DSSUB AX,AXPUSH AX;=MOV AX,DS;使ES段地址与DS相同MOV ES,AXMOV SI,1000H;不带最高位进位的全加器MOV DI,1003HMOV BX,1006HMOV CX,3CLCAA: MOV AL,SIADC AL,DIMOV BX,ALPUSHF;保护FR,这里其实没有必要,因为INC不会产生进位INC SIINC DIINC BXPOPFLOOP AAMOV DL,0;最高位进位ADC DL,0MOV DI,1009HMOV DI,DLMOV SI,1000H;串传送MOV DI,1010HMOV CX,5CLDREP MOVSW;一次传送一个字;=RETSTART ENDPCODE ENDSEND STT实验02C,选作编写一个两位十进制数加法程序,当从键盘上输入:n1n2+n3n4则在CRT上显示n1n2+n3n4=n5n6程序如下:DATA SEGMENTH1 DB The addends all must be two figures, insufficient adds 0 in front.,13,10,$DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART PROC FARSTT:PUSH DSSUB AX,AXPUSH AX;=MOV AX,DATAMOV DS,AXLEA DX,H1;打印注释:加数和被加数都必须为两位数,不够的前面补0MOV AH,09HINT 21HSUB CX,CX;CX清零SUB DX,DX;DX清零CLC;清CFMOV AH,1;输入第1个数INT 21HMOV CH,AL;放入CHSUB CH,30H;ASCII码调整INT 21H;输入第2个数MOV CL,AL;放入CLSUB CL,30H;ASCII码调整MOV AH,2;打印加号MOV DL,2BHINT 21HMOV AH,1;输入第3个数INT 21HMOV DH,AL;放入DHSUB DH,30H;ASCII码调整INT 21H;输入第4个数MOV DL,AL;放入DLSUB DL,30H;ASCII码调整ADD CL,DL;ASCII码个位加法CMP CL,10;比较个位数结果是否大于10JNC AA;大于等于10则跳至AAADD CH,DH;个位不向十位进位的十位加法JMP BBAA: ADD CH,DH;个位向十位有进位的十位加法ADD CH,1SUB CL,10BB: MOV DL,3DH;打印等号MOV AH,2INT 21HCMP CH,10;比较十位数结果是否大于10JNC CCMOV DL,0;打印十位不向百位进位的百位=0INT 21HJMP CCCCC: MOV DL,31H;打印十位向百位进位的百位=1INT 21HSUB CH,10CCC:ADD CH,30H;ASCII码调整MOV DL,CH;打印结果中的十位INT 21HADD CL,30H;ASCII码调整MOV DL,CL;打印结果中的个位INT 21HMOV AH,1;暂停INT 21H;=RETSTART ENDPCODE ENDSEND STT实验03A在数据段偏移地址0100H处开始,存放0-9的平方值(构成一个表格),任给一个自然数M在0110H单元中(0=M=9),查表求出M的平方值,并将结果放入0111H单元。程序如下:DATA SEGMENTORG 0100HH1 DB 00,01,04,09,16,25,36,49,64,81ORG 0110HH2 DB 7,?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART PROC FARSTT:PUSH DSSUB AX,AXPUSH AX;=MOV AX,DATAMOV DS,AXMOV SI,OFFSET H2MOV AL,SIMOV BX,OFFSET H1XLATINC SIMOV SI,AL;=RETSTART ENDPCODE ENDSEND STT实验03B从内存1000H开始,建立19个自然递增然后又递减的数据串(0-9-0),用DEBUG查看运行结果。程序如下:DATA SEGMENTORG 1000HH1 DB 20 DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART PROC FARSTT:PUSH DSSUB AX,AXPUSH AX;=MOV SI,OFFSET H1MOV DI,OFFSET H1ADD DI,12HMOV AL,0MOV CX,10AA: MOV SI,ALMOV DI,ALINC SIDEC DIINC ALLOOP AA;=RETSTART ENDPCODE ENDSEND STT实验03C,选作在数据段偏移地址1000H处,安排部分七段LED显示码表,要求从键盘上任给一个0F中的数,然后再屏幕上显示出其对应的码值。七段共阴极LED显示码表见实验册P14。程序如下:DATA SEGMENTORG 1000HH1 DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71HH2 DB 1 DUP(?)TIP DB 13,10,The input number must be a HEX (0F), press to quit.,13,10,$ERR DB 13,10,The input number must be a HEX (0F).,13,10,$DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART PROC FARSTT:PUSH DSSUB AX,AXPUSH AX;=MOV AX,DATAMOV DS,AXLEA DX,TIP;打印TIP信息MOV AH,09HINT 21HBEGIN:MOV DL,13;打印换行MOV AH,2INT 21HMOV DL,10;打印回行首INT 21HMOV AH,1;等待从键盘输入INT 21HMOV SI,OFFSET H2;保护输入MOV SI,ALCMP AL,27;如果按下键,跳至QUITJZ QUITCALL DISPLAY0 ;调用DISPLAY0子程序CALL ASCII2HEX ;调用ASCII2HEX子程序CMP AL,0FFH;如果AL不等于FF(出错码)则跳至CORRECTJNZ CORRECTLEA DX,ERR;打印错误信息MOV AH,09HINT 21HJMP FINISH;跳至FINISHCORRECT:MOV BX,OFFSET H1;查表XLATMOV AH,0MOV BX,0MOV BL,AL ;分离AL的高4位和低4位,分离后AL中为高4位,BL中为低4位AND AL,0F0HMOV CL,4SHR AL,CLAND BL,0FHCALL HEX2ASCII;调用HEX2ASCIICALL DISPLAY;调用DISPLAY子程序MOV AL,BLCALL HEX2ASCIICALL DISPLAYMOV DL,72;打印字母HMOV AH,2INT 21HJMP FINISHQUIT:CALL ESCAPE;调用ESCAPE子程序FINISH:JMP BEGIN;=RETSTART ENDPASCII2HEX PROC NEARCMP AL,30H;ASCII转16进制子程序JB ERROR;如果AL0则跳至ERRORCMP AL,39HJBE NUMBER;如果ALF则跳至ERRORSUB AL,07HNUMBER:SUB AL,30HJMP DONEERROR:MOV AL,0FFHDONE:RETASCII2HEX ENDPHEX2ASCII PROC NEARCLC;16进制转ASCII子程序DAAADD AL,0F0HADC AL,40HRETHEX2ASCII ENDPDISPLAY PROC NEARPUSH DX;显示结果子程序MOV DL,ALMOV AH,2INT 21HPOP DXRETDISPLAY ENDPDISPLAY0 PROC NEARPUSH AX;该子程序打印输入及:PUSH DXPUSHFMOV DL,13MOV AH,2INT 21HMOV DL,10INT 21HMOV DL,SI;打印输入INT 21HMOV DL,58;打印:INT 21HPOPFPOP DXPOP AXRETDISPLAY0 ENDPESCAPE PROC NEARMOV AH,4CH;返回操作系统子程序INT 21HRETESCAPE ENDPCODE ENDSEND STT实验04A把BX中的“1”的个数放到AL中,并在屏幕上显示“1”的个数。程序如下:CODE SEGMENTASSUME CS:CODESTART PROC FARSTT:PUSH DSSUB AX,AXPUSH AX;=CLCMOV AX,0MOV DX,0MOV BX,000FHMOV CX,16CHECK:SHL BX,1ADC DL,0CMP DL,1JZ COUNTCONTINUE:LOOP CHECKJMP FINISHCOUNT:ADD AL,1DAACLCMOV DX,0JMP CONTINUEFINISH:MOV AH,0MOV BX,0MOV BL,AL;分离AL的高4位和低4位,分离后AL中为高4位,BL中为低4位AND AL,0F0HMOV CL,4SHR AL,CLAND BL,0FHCALL HEX2ASCII;调用HEX2ASCIICALL DISPLAY;调用DISPLAY子程序MOV AL,BLCALL HEX2ASCIICALL DISPLAY;=RETSTART ENDPHEX2ASCII PROC NEARCLC;16进制转ASCII子程序DAAADD AL,0F0HADC AL,40HRETHEX2ASCII ENDPDISPLAY PROC NEARPUSH DX;显示结果子程序MOV DL,ALMOV AH,2INT 21HPOP DXRETDISPLAY ENDPCODE ENDSEND STT实验04B,选作编写程序在CRT上显示图形(图形见实验册P17)。程序如下:CODE SEGMENTASSUME CS:CODESTART PROC FARSTT:PUSH DSSUB AX,AXPUSH AX;=MOV BL,14HMOV BH,1MOV CX,0AHLP: PUSH BXCALL SPACECALL STARCALL CRLFPOP BXDEC BLADD BH,2LOOP LP;=RETSTART ENDPSPACE PROC NEAR;打印空格子程序PUSH CXMOV CX,0MOV AH,2MOV DL,32MOV CL,BLLP1:INT 21HLOOP LP1POP CXRETSPACE ENDPSTAR PROC NEAR;打印*子程序PUSH CXMOV CX,0MOV DL,2AHMOV AH,2MOV CL,BHLP2:INT 21HLOOP LP2POP CXRETSTAR ENDPCRLF PROC NEAR;回车换行子程序MOV DL,13MOV AH,2INT 21HMOV DL,10INT 21HRETCRLF ENDPCODE ENDSEND STT实验04C,选作自动生成1至99BCD数并送屏幕显示,显示格式见实验册P19。程序如下:CODE SEGMENTASSUME CS:CODESTART PROC FARSTT:PUSH DSSUB AX,AXPUSH AX;=MOV BL,16MOV AL,0CALL PRINTCALL CRLF;=RETSTART ENDPPRINT PROC NEAR;打印数字子程序MOV AH,2MOV DH,1MOV CX,10MOV BH,30HLP2:PUSH CXMOV CX,10MOV BL,30HLP0:CMP BH,30HJZ AAJMP BBAA: CMP BL,30HJZ CONBB: MOV DL,BHINT 21HMOV DL,BLINT 21HCALL SPACECON:INC BLLOOP LP0INC BHPOP CXLOOP LP2RETPRINT ENDPSPACE PROC NEAR;打印空格子程序PUSH CXMOV CX,0MOV AH,2MOV DL,32MOV CL,2LP1:INT 21HLOOP LP1INC DHCMP DH,17JZ KKJMP LLKK: CALL CRLFMOV DH,1LL: POP CXRETSPACE ENDPCRLF PROC NEAR;回车换行子程序MOV DL,13MOV AH,2INT 21HMOV DL,10INT 21HRETCRLF ENDPCODE ENDSEND STT实验05A从首地址为BUF开始存放10个数(单字节无符号数),从这些数种找出最大值,存入MAX中,并显示到屏幕上。程序如下:DATA SEGMENTORG 1000HBUF DB 1H,2H,3H,4H,9H,5H,6H,0EH,8H,7HORG 1020HMAX DB 1 DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART PROC FARSTT:PUSH DSSUB AX,AXPUSH AX;=MOV AX,DATAMOV DS,AXCALL CHAMAXCALL HEX2ASCIIMOV DL,ALMOV AH,2INT 21H;=RETSTART ENDPCHAMAX PROC NEARMOV SI,OFFSET BUFMOV AL,SIMOV CX,9INC SIF0: CMP AL,SIJGE F1MOV AL,SIF1: INC SILOOP F0MOV DI,OFFSET MAXMOV DI,ALRETCHAMAX ENDPHEX2ASCII PROC NEARCLC;16进制转ASCII子程序DAAADD AL,0F0HADC AL,40HRETHEX2ASCII ENDPCODE ENDSEND STT实验05B在BUF开始存放10个字节的带符号数组,分别统计正数、负数、零的个数,存放在数组的后面。程序如下:DATA SEGMENTORG 1000HBUF DW 1,2,3,0,-4,-5,-6,-7,-8,-9EZ DB 0HLZ DB 0HT1 DB ZHENG SHU, LING, FU SHU:,13,10,$DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART PROC FARSTT:PUSH DSSUB AX,AXPUSH AX;=MOV AX,DATAMOV DS,AXCLCMOV AX,0MOV BX,0MOV SI,OFFSET BUFMOV CX,10CHECK:MOV AX,SICMP AX,0JZ EQALZEROSHL AX,1ADC BL,0CMP BL,1JZ LESSZEROCONTINUE:ADD SI,2CLCMOV BL,0LOOP CHECKJMP FINISHEQALZERO:MOV DI,OFFSET EZMOV DL,DIINC DLMOV DI,DLJMP CONTINUELESSZERO:MOV DI,OFFSET LZMOV DL,DIINC DLMOV DI,DLJMP CONTINUEFINISH:MOV BL,10MOV DI,OFFSET EZMOV AL,DISUB BL,ALMOV DI,OFFSET LZMOV AL,DISUB BL,ALMOV AL,BLPUSH DXPUSH AXLEA DX,T1MOV AH,09HINT 21HPOP AXPOP DXCALL HEX2ASCIICALL DISPLAYMOV DI,OFFSET EZMOV AL,DICALL HEX2ASCIICALL DISPLAYMOV DI,OFFSET LZMOV AL,DICALL HEX2ASCIICALL DISPLAY;=RETSTART ENDPHEX2ASCII PROC NEARCLC;16进制转ASCII子程序DAAADD AL,0F0HADC AL,40HRETHEX2ASCII ENDPDISPLAY PROC NEARPUSH DXMOV DL,ALMOV AH,2INT 21HMOV DL,2CHMOV AH,2INT 21HPOP DXRETDISPLAY ENDPCODE ENDSEND STT实验05CBUF开始存放10个16位有符号数(字),将其中的负数抹掉,把正数连续地重新存放在BUF数组之后。程序如下:DATA SEGMENTORG 1000HBUF DW 1,2,3,0,-4,-5,-6,-7,-8,-9GZ DW 10 DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART PROC FARSTT:PUSH DSSUB AX,AXPUSH AX;=MOV AX,DATAMOV DS,AXCLCMOV AX,0MOV BX,0MOV SI,OFFSET BUFMOV DI,OFFSET GZMOV CX,10CHECK:MOV AX,SIMOV DX,AXCMP AX,0JZ LESSZEROSHL AX,1ADC BL,0CMP BL,1JZ LESSZEROMOV DI,DXADD DI,2CONTINUE:ADD SI,2CLCMOV BL,0LOOP CHECKJMP FINISHLESSZERO:MOV WORD PTR SI,0HJMP CONTINUEFINISH:;=RETSTART ENDPCODE ENDSEND STT实验06,软件综合设计模拟温度测量软件设计,具体要求见实验册P22。程序如下:DATA SEGMENTORG 1000HTEMP DB 128,127,122,128,128,128,127,128,129,129,128,128,129,128,128,128ORG 1010HAVER DB 10 DUP(?)ORG 1020HBCD1 DB 10 DUP(?)ORG 1030HBCD2 DB 10 DUP(?)ORG 1040HXLATED DB 10 DUP(?)ORG 1060HLEDA DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH,7FHDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART PROC FARSTT:PUSH DSSUB AX,AXPUSH AX;=MOV AX,DATAMOV DS,AXMOV AX,0MOV BX,0MOV CX,0MOV DX,0CALL Z1CALL Z2CALL Z3CALL Z4CALL Z5;=RETSTART ENDPZ1 PROC NEAR;将首地址为1000H开始存放的16个单字节数组取平均值后,存放在1010H开始的单元中MOV SI,OFFSET TEMPCLCMOV CX,15MOV AL,SILP1:INC SIMOV BL,SIADD AX,BXADC DX,0LOOP LP1MOV BX,16DIV BXMOV SI,OFFSET AVERMOV SI,DXADD SI,2MOV SI,AXRETZ1 ENDPZ2 PROC NEAR;将存放在1010H开始的数转换成压缩的BCD码,存放在1020H开始的单元中MOV CX,SIMOV AX,0LP: ADD AL,1MOV BL,ALDAACMP BL,9AHJE LP2JMP LP3LP2:ADD AH,1LP3:LOOP LPMOV SI,OFFSET BCD1MO
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 甲状腺癌护士课件
- 游戏主题活动方案设计
- 《教学相长》课件
- 甲午中日战争课件简短
- 2025年英语四级阅读理解专项训练试卷 阅读理解词汇训练
- 2025年秋季会计职称考试 税法与财务会计实务历2025年真题试卷
- 2025年秋季初级经济师 经济基础知识押题冲刺试卷:实战模拟
- 2025年Python编程实战演练试卷专项训练题库大全
- 生态环保应急知识培训课件
- 2025至2030中国高模量纤维行业市场发展分析及商业模式与发展趋势分析与未来投资战略咨询研究报告
- 图文店员工基本知识培训课件
- 医院财务人员专业能力提升培训
- 劳动仲裁员任职培训课件
- 2026创新设计高考总复习生物(人教版)-限时强化练答案解析
- 2025年中学生法治素养竞赛题库及答案
- 《语文八下第三单元复习课》课件
- 益阳市融资担保有限责任公司招聘考试真题2024
- 2025年山西省公务员考试行测试卷历年真题及答案详解(名校卷)
- 新人教版五年级上册小学数学教学计划+教学进度表
- 第四版(2025)国际压力性损伤溃疡预防和治疗临床指南解读
- 建筑工程钢筋抽料知识总结
评论
0/150
提交评论