实验一汇编语言程序设计.docx

上传人:b****6 文档编号:15663589 上传时间:2023-07-06 格式:DOCX 页数:9 大小:16.92KB
下载 相关 举报
实验一汇编语言程序设计.docx_第1页
第1页 / 共9页
实验一汇编语言程序设计.docx_第2页
第2页 / 共9页
实验一汇编语言程序设计.docx_第3页
第3页 / 共9页
实验一汇编语言程序设计.docx_第4页
第4页 / 共9页
实验一汇编语言程序设计.docx_第5页
第5页 / 共9页
实验一汇编语言程序设计.docx_第6页
第6页 / 共9页
实验一汇编语言程序设计.docx_第7页
第7页 / 共9页
实验一汇编语言程序设计.docx_第8页
第8页 / 共9页
实验一汇编语言程序设计.docx_第9页
第9页 / 共9页
亲,该文档总共9页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

实验一汇编语言程序设计.docx

《实验一汇编语言程序设计.docx》由会员分享,可在线阅读,更多相关《实验一汇编语言程序设计.docx(9页珍藏版)》请在冰点文库上搜索。

实验一汇编语言程序设计.docx

实验一汇编语言程序设计

实验一汇编语言程序设计

  实验一  汇编语言程序设计

  一、实验目的

  1、掌握Lab6000p实验教学系统基本操作;  2、掌握8088/8086汇编语言的基本语法结构;  3、熟悉8088/8086汇编语言程序设计基本方法二、实验设备

  装有emu8086软件的PC机三、实验内容

  1、有一个10字节的数组,其值分别是80H,03H,5AH,FFH,97H,64H,BBH,7FH,0FH,D8H。

编程并显示结果:

  如果数组是无符号数,求出最大值,并显示;如果数组是有符号数,求出最大值,并显示。

  2、将二进制数500H转换成二-十进制码,并显示“500H的BCD是:

”3、将二-十进制码7693转换成ASCII码,并显示“BCD码7693的ASCII是:

”4、两个长度均为100的内存块,先将内存块1全部写上88H,再将内存块1的内容移至内存块2。

在移动的过程中,显示移动次数1,2,3…0AH…64H

  5、键盘输入一个小写字母(a~z),转换成大写字母显示:

请输入一个小写字母(a~z):

转换后的大写字母是:

  6、实现4字节无符号数加法程序,并显示结果,如99223344H+99223344H=xxxxxxxxH四、实验代码及结果、实验代码:

  第1页

  DATASEGMENT

  SZDB80H,03H,5AH,0FFH,97H,64H,0BBH,7FH,0FH,0D8H;存进数组  SHOWDB'THEMAXIS:

','$'DATAENDSCODESEGMENT

  ASSUMECS:

CODE,DS:

DATASTART:

  MOV  AX,DATA  ;把数据的基地址赋给DS  MOV  DS,AX  

  MOV  DX,OFFSETSHOW  ;调用DOS显示字符串  MOV  AH,09H

  INT  21H  

  MOV  SI,OFFSETSZ  ;数组的偏移地址赋给SI  MOV  CX,10  ;存进数组的长度给CX  MOV  DH,80H  ;将数组的第一个数写进DHNEXT:

  

  MOV  BL,[SI]  ;将数组的第一个数写进BL  CMP  DH,BL  ;比较DH和BL中数的到校  JAE  NEXT1  ;如果DH中的数大于BL中,将跳转到NEXT1  MOV  DH,BL;如果DH中的数小于BL中,将BL中的数赋给DHNEXT1:

  INC  SI  ;偏移地址加1

  LOOP  NEXT;循环,CX自减一直到0,DH中存数组的最大值  ;接下来的程序是将将最大值DH在屏幕上显示输出  MOV  BX,02H

  第2页  

  NEXT2:

  

  MOV  CL,4  

  ROL  DH,CL  ;将DH循环右移四位  MOV  AL,DH  

  AND  AL,0FH  ;将AL高位清零,一位一位进行ASCII码转换  CMP  AL,09H  ;与09H比较大小

  JBE  NEXT3  ;若小于,跳转至NEXT3,证明数值在0-9之间

  ADD  AL,07H;若大于,则证明为字母,因为字母与数字的ASCII码相差7,所以要加上7NEXT3:

  

  ADD  AL,30H  ;因为转换为ASCII码要加30H  MOV  DL,AL

  MOV  AH,2  ;DOS中断显示  INT  21H  DEC  BX  JNZ  NEXT2  MOV  DL,'H'  MOV  AH,2  INT  21HCODEENDS  ENDSTART实验结果:

  第3页  

  第4页  

  、实验代码DATASEGMENT

  SZDB80H,03H,5AH,0FFH,97H,64H,0BBH,7FH,0FH,0D8H  ;存进数组  SHOWDB'THEMAXIS:

','$'DATAENDSCODESEGMENT

  ASSUMECS:

CODE,DS:

DATASTART:

  MOV  AX,DATA  ;把数据的基地址赋给DS  MOV  DS,AX  

  MOV  DX,OFFSETSHOW  ;调用DOS显示字符串  MOV  AH,09H

  INT  21H  

  MOV  SI,OFFSETSZ  ;数组的偏移地址赋给SI  MOV  CX,10  ;存进数组的长度给CX  MOV  DH,80H  ;将数组的第一个数写进DHNEXT:

  

  MOV  BL,[SI]  ;将数组的第一个数写进BL  CMP  DH,BL  ;比较DH和BL中数的到校

  JGE  NEXT1  ;如果DH中的数大于BL中,将跳转到NEXT1  ;此为无符号数与有符号数的唯一差别,JGE是无符号数的跳转  MOV  DH,BL  ;如果DH中的数小于BL中,将BL中的数赋给DHNEXT1:

  INC  SI  ;偏移地址加1

  LOOP  NEXT;循环,CX减1,一直到CX减为0,DH中存数组的最大值

  第5页  

  ;接下来的程序是将最大值DH在屏幕上显示输出  MOV  BX,02HNEXT2:

  

  MOV  CL,4  

  ROL  DH,CL  ;将DH循环右移四位  MOV  AL,DH  

  AND  AL,0FH  ;将AL高位清零,一位一位进行ASCII码转换  CMP  AL,09H  ;与09H比较大小

  JBE  NEXT3  ;若小于,跳转至NEXT3,证明数值在0-9之间

  ADD  AL,07H;若大于,则证明为字母,因为字母与数字的ASCII码相差7,所以要加上7NEXT3:

  

  ADD  AL,30H  ;因为转换为ASCII码要加30H  MOV  DL,AL

  MOV  AH,2  ;DOS中断显示  INT  21H  DEC  BX  JNZ  NEXT2  MOV  DL,'H'  MOV  AH,2  INT  21HCODEENDS  ENDSTART实验结果

  第6页  

  第7页  

  2、实验代码

  DATA  SEGMENT  BNUMDW0500H

  DNUMDB4DUP  

  MESDB'THEBCDOF'500H'IS:

','$'DATA  ENDSCODE  SEGMENT

  ASSUMECS:

CODE,DS:

DATASTART:

  MOV  AX,DATA  MOV  DS,AX  

  MOV  DX,OFFSETMES  MOV  AH,09H  INT  21H  

  MOV  AX,BNUM  LEA  BX,DNUM  MOV  DL,0;计算1000的个数COUNT1:

  

  SUB  AX,03E8H  JC  NEXT1  INC  DL  JMP  COUNT1  NEXT1:

  

  ADD  AX,03E8H  

  ;将字符串偏移量写入DX  ;将0500H存入AX中

  ;取DNUM的偏移量  ;AX-1000

  ;不够减,即若CF=1,有借位,转NEXT1  ;DL+1

  ;跳转AGAIN1  ;AX+1000

  第8页  

  MOV  [BX],DL  ;将DL(即千位数)存入DNUM中  INC  BX  ;BX+1  MOV  DL,0  ;DL清零;计算100个数COUNT2:

  

  SUB  JC  INC  JMPNEXT2:

  

  ADD  MOV  INC  MOV;计算10个数COUNT3:

  

  SUB  JC  INC  JMPNEXT3:

  

  ADD  MOV  INC  MOV

  AX,0064H  NEXT2DLCOUNT2AX,0064H

  [BX],DL  BXDL,0  AX,000AH  NEXT3DLCOUNT3AX,000AH

  [BX],DL  BX  [BX],AL  ;AX-100;将DL(即百位数)存入DNUM中;AX-10;将DL(十位数)存入DNUM中;计算个位数

  第9页  

  ;接下来的程序是将数值转化为ASCII并在屏幕上显示  MOV  CX,4

  LEA  SI,DNUM  ;取DNUM的地址偏移量NEXT4:

  MOV  AL,[SI];将DNUM中所存的各个数值转换为ASCII码;;在屏幕上输出显示

  CMP  AL,09H  JBE  NEXT5

  ADD  AL,07H  NEXT5:

  ADD  AL,30H  MOV  DL,AL  MOV  AH,2  INT  21H  INC  SI  DEC  CX  JNZ  NEXT4  CODE  ENDS  END  START实验结果

  第10页  

  第11页  

  3、实验代码DATASEGMENT

  OUPDB'THEASCIIOF7963IS:

','$'  A1DB07H,09H,06H,03HDATAENDSCODESEGMENT

  ASSUMECS:

CODE,DS:

DATASTART:

  MOV  AX,DATA  MOV  DS,AX

  MOV  DX,OFFSETOUP  MOV  AH,09H  INT  21H  MOV  CL,4  MOV  SI,0NEXT:

  MOV  AL,A1[SI];将A1的第SI个数据传给AL  MOV  BL,AL

  OR  AL,30H  ;加30转换为ASCII码值  SHR  AL,4

  AND  AL,0FH  ;将右移后的高位清零

  ADD  AL,30H  ;因为ASCII码与值之间相差30  MOV  DL,AL

  MOV  AH,2  ;输出对应的ASCII码  INT  21H

  第12页  

  MOV  AL,BL  AND  AL,0FH  ADD  AL,30H  MOV  DL,AL  MOV  AH,02H  INT  21H  MOV  DL,''  MOV  AH,02H  INT  21H  INC  SI  LOOP  NEXTEXIT:

  MOV  AH,4CH  INT  21HCODE  ENDS  END  START实验结果

  第13页  

  第14页  

  4、实验代码

  DATA  SEGMENT

  YIDB100DUP(88H)

  ERDB100DUP(00H)  ;定义数组  MESDB'THENUMBEROFCOUNTERIS:

','$'DATA  ENDSCODE  SEGMENT

  ASSUMECS:

CODE,DS:

DATAMAIN  PROCFARSTART:

  MOVAX,DATA  MOVDS,AX

  MOVCL,100  MOVCH,00H  LEASI,YI  LEADI,ER  NEXT:

  MOVAL,[SI]

  MOV[DI],AL  INCSI  INCDI  INCCH

  MOVDX,OFFSETMES  MOVAH,9  INT21H

  CALLCOUNT  DECCL  

  ;计数器初值

  ;转移次数统计,初值;将内存块1的偏移量给SI;将内存块2的偏移量给DI;将YI中的数据复制到ER中  ;显示字符串  ;调用子程序;计数减1

  第15页  

  JNZNEXT  ;计数不为零,跳转执行  HLT

  MAINENDP  ;主程序结束;下面是子程序,实现屏幕显示转移次数功能

  COUNT  PROCNEAR  ;定义子程序属性  NEXT2:

  NEXT3:

  

  PUSHCX  MOVDH,CHMOVBX,02H

  MOVCL,4  ROLDH,CL  MOVAL,DH  ANDAL,0FH  CMPAL,09H  JBENEXT3  ADDAL,07H  

  ADDAL,30H  MOVDL,AL

  MOVAH,2  INT21HDECBXJNZNEXT2

  MOVDL,'H'  MOVAH,2INT21H

  MOVDL,0AH  ;CX进栈  

  ;将DH循环右移四位

  ;将AL高位清零;与09H比较大小;若小于,跳转至NEXT3;加30H;DOS中断显示;显示H;回车

  第16页  

  MOVAH,2  INT21H

  MOVDL,0DH  ;换行  MOVAH,2  INT21H

  POPCX  ;CX出栈  RETCOUNT  ENDP;子程序结束CODE  ENDS  ENDSTART实验结果

  第17页  

  第18页  

  5、实验代码

  DATA  SEGMENT

  INPDB'PLEASEINPUT(a~z):

','$'  ;设置字符串  OUPDB'THETRANSFORMATION(A~Z)IS:

','$'DATA  ENDS  CODE  SEGMENT

  ASSUMECS:

CODE,DS:

DATAMAIN  PROCFARSTART:

  MOVAX,DATA  MOVDS,AX  

  MOVDX,OFFSETINP  ;显示字符串,提示输入  MOVAH,9  INT21H

  MOVAH,1  ;DOS中断调用,从键盘中读取一个字符  INT21H

  PUSHAX  ;AX入栈  PUSHDX

  MOVDL,0DH  ;中断调用,回车  MOVAH,2

  INT21H  

  MOVDL,0AH  ;中断调用,换行  MOVAH,2

  INT21H  

  MOVDX,OFFSETOUP  ;显示字符串,输出提示  MOVAH,9

  第19页  

  INT21H

  POPDX  ;DX出栈  POPAX  ;AX出栈  SUBAL,32;AL减去32,使大写转化为小写;大小写之间的ASCII码值相差32

  MOVDL,AL  ;DOS中断显示结果  MOVAH,2  INT21H  MAINENDPCODE  ENDS  ENDSTART实验结果:

  第20页  

  实验一  汇编语言程序设计

  一、实验目的

  1、掌握Lab6000p实验教学系统基本操作;  2、掌握8088/8086汇编语言的基本语法结构;  3、熟悉8088/8086汇编语言程序设计基本方法二、实验设备

  装有emu8086软件的PC机三、实验内容

  1、有一个10字节的数组,其值分别是80H,03H,5AH,FFH,97H,64H,BBH,7FH,0FH,D8H。

编程并显示结果:

  如果数组是无符号数,求出最大值,并显示;如果数组是有符号数,求出最大值,并显示。

  2、将二进制数500H转换成二-十进制码,并显示“500H的BCD是:

”3、将二-十进制码7693转换成ASCII码,并显示“BCD码7693的ASCII是:

”4、两个长度均为100的内存块,先将内存块1全部写上88H,再将内存块1的内容移至内存块2。

在移动的过程中,显示移动次数1,2,3…0AH…64H

  5、键盘输入一个小写字母(a~z),转换成大写字母显示:

请输入一个小写字母(a~z):

转换后的大写字母是:

  6、实现4字节无符号数加法程序,并显示结果,如99223344H+99223344H=xxxxxxxxH四、实验代码及结果、实验代码:

  第1页

  DATASEGMENT

  SZDB80H,03H,5AH,0FFH,97H,64H,0BBH,7FH,0FH,0D8H;存进数组  SHOWDB'THEMAXIS:

','$'DATAENDSCODESEGMENT

  ASSUMECS:

CODE,DS:

DATASTART:

  MOV  AX,DATA  ;把数据的基地址赋给DS  MOV  DS,AX  

  MOV  DX,OFFSETSHOW  ;调用DOS显示字符串  MOV  AH,09H

  INT  21H  

  MOV  SI,OFFSETSZ  ;数组的偏移地址赋给SI  MOV  CX,10  ;存进数组的长度给CX  MOV  DH,80H  ;将数组的第一个数写进DHNEXT:

  

  MOV  BL,[SI]  ;将数组的第一个数写进BL  CMP  DH,BL  ;比较DH和BL中数的到校  JAE  NEXT1  ;如果DH中的数大于BL中,将跳转到NEXT1  MOV  DH,BL;如果DH中的数小于BL中,将BL中的数赋给DHNEXT1:

  INC  SI  ;偏移地址加1

  LOOP  NEXT;循环,CX自减一直到0,DH中存数组的最大值  ;接下来的程序是将将最大值DH在屏幕上显示输出  MOV  BX,02H

  第2页  

  NEXT2:

  

  MOV  CL,4  

  ROL  DH,CL  ;将DH循环右移四位  MOV  AL,DH  

  AND  AL,0FH  ;将AL高位清零,一位一位进行ASCII码转换  CMP  AL,09H  ;与09H比较大小

  JBE  NEXT3  ;若小于,跳转至NEXT3,证明数值在0-9之间

  ADD  AL,07H;若大于,则证明为字母,因为字母与数字的ASCII码相差7,所以要加上7NEXT3:

  

  ADD  AL,30H  ;因为转换为ASCII码要加30H  MOV  DL,AL

  MOV  AH,2  ;DOS中断显示  INT  21H  DEC  BX  JNZ  NEXT2  MOV  DL,'H'  MOV  AH,2  INT  21HCODEENDS  ENDSTART实验结果:

  第3页  

  第4页  

  、实验代码DATASEGMENT

  SZDB80H,03H,5AH,0FFH,97H,64H,0BBH,7FH,0FH,0D8H  ;存进数组  SHOWDB'THEMAXIS:

','$'DATAENDSCODESEGMENT

  ASSUMECS:

CODE,DS:

DATASTART:

  MOV  AX,DATA  ;把数据的基地址赋给DS  MOV  DS,AX  

  MOV  DX,OFFSETSHOW  ;调用DOS显示字符串  MOV  AH,09H

  INT  21H  

  MOV  SI,OFFSETSZ  ;数组的偏移地址赋给SI  MOV  CX,10  ;存进数组的长度给CX  MOV  DH,80H  ;将数组的第一个数写进DHNEXT:

  

  MOV  BL,[SI]  ;将数组的第一个数写进BL  CMP  DH,BL  ;比较DH和BL中数的到校

  JGE  NEXT1  ;如果DH中的数大于BL中,将跳转到NEXT1  ;此为无符号数与有符号数的唯一差别,JGE是无符号数的跳转  MOV  DH,BL  ;如果DH中的数小于BL中,将BL中的数赋给DHNEXT1:

  INC  SI  ;偏移地址加1

  LOOP  NEXT;循环,CX减1,一直到CX减为0,DH中存数组的最大值

  第5页  

  

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

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2