学习指导书上机实践源程序打印稿.doc_第1页
学习指导书上机实践源程序打印稿.doc_第2页
学习指导书上机实践源程序打印稿.doc_第3页
学习指导书上机实践源程序打印稿.doc_第4页
学习指导书上机实践源程序打印稿.doc_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

汇编语言程序-上机源程序董建怀编2007-12-1TITLE 学习指导书P153,10.2-1data SEGMENT infor1 DB Please input the first data(10):$ infor2 DB 0ah,0dh,please input the second data(10):$ infor3 DB 0ah,0dh,the result is:$data ENDScode SEGMENT ASSUME CS:code,DS:datastart:MOV AX,data MOV DS,AX MOV DX,OFFSET infor1 ;显示第一行的提示信息 MOV AH,9 INT 21h MOV AH,1 ;从键盘接收第一个字符 INT 21h SUB AL,30h ;转换成第一个加数 MOV CL,AL MOV DX,OFFSET infor2 ;显示第二行的提示信息 MOV AH,9 INT 21h MOV AH,1 ;从键盘接收第二个字符 INT 21h ;MOV BL,AL SUB AL,30h ;转换成第二个加数 XOR AH,AH ;调整成非压缩型的十进制相加 ADD AL,CL AAA PUSH AX ;保存非压缩型的十进制相加的结果,十位在AH中,个位在AL中. MOV DX,OFFSET infor3 ;显示第三行的提示信息 MOV AH,9 INT 21h POP AX ;调出非压缩型的十进制相加的结果,十位在AH中,个位在AL中. PUSH AX ;保存非压缩型的十进制相加的结果,十位在AH中,个位在AL中.为下一次调出作准备. MOV DL,AH ;十位数加30H转换成对应的ASCII码 ADD DL,30h MOV AH,02 ;十位数输出 INT 21h POP AX ;调出非压缩型的十进制相加的结果,十位在AH中,个位在AL中. MOV DL,AL ADD DL,30h ;个位数加30H转换成对应的ASCII码 MOV AH,02h INT 21h ;MOV AH,01 ;避免运行中直接返回DOS而看不到结果,确保按任何键时才返回DOS ;INT 21h MOV AH,4ch ;采用非标准方法返回DOS INT 21hcode ENDS END startNAME 学习指导书P154,10.2-2参考源程序data SEGMENT num DB 00,01,04,09,16,25,36,49,64,81 ;在内存中是以二进制数(十六进制数)形式存放 infor1 DB please input the data(09):$ infor2 DB 0ah,0dh,the result is:$data ENDScode SEGMENT ASSUME CS:code,DS:datastart: MOV AX,data MOV DS,AX MOV DX,OFFSET infor1 MOV AH,9 INT 21h MOV AH,01h INT 21h MOV CH,AL MOV DX,OFFSET infor2 MOV AH,9 INT 21h MOV BX,OFFSET num MOV AL,CH SUB AL,30h XLAT ;交换指令,所得的平方数放在AL中. AAM ;将AL中的二进制数转换成非压缩型BCD码,十位放在AH中,个位放在AL中. ;可用MOV AH,00H;MOV BL,0AH;DIV BL,则所得的结果十位放在AH中,个位放在AL中. MOV BX,AX ADD AH,30h ;十位加30H转换成ASCII码,输出显示. MOV DL,AH MOV AH,2 INT 21h MOV AL,BL ;十位加30H转换成ASCII码,输出显示. ADD AL,30h MOV DL,AL MOV AH,02 INT 21h ;MOV AH,01 ;INT 21h MOV AH,4ch INT 21hcode ENDS END start;学习指导书P155(10.3)源程序data SEGMENT INfor1 DB 0ah,0dh,please press any key to input a letter:$ INfor2 DB 0ah,0dh,you input a lowetcase letter!$ INfor3 DB 0ah,0dh,you input a uppercase letter!$ INfor4 DB 0ah,0dh,you input a digit!$ INfor5 DB 0ah,0dh,you input a other letter!$data ENDScode SEGMENT ASSUME CS:code,DS:datastart: MOV AX,data MOV DS,AX MOV DX,OFFSET INfor1 MOV AH,09 INT 21h MOV AH,01h INT 21h CMP AL,0 JB other CMP AL,9 JBE DIgit CMP AL,A JB other CMP AL,Z JBE upper CMP AL,a JB other CMP AL,z JBE LOWer JMP pendLOWer: MOV DX,OFFSET INfor2 MOV AH,09h INT 21h JMP pendupper: MOV DX,OFFSET INfor3 MOV AH,09h INT 21h JMP pendDIgit: MOV DX,OFFSET INfor4 MOV AH,09h INT 21h JMP pendother: MOV DX,OFFSET INfor5 MOV AH,09h INT 21h pend: ;MOV AH,01 ;INT 21h MOV AH,4cH INT 21hcode ENDS END START;学习指导书P157-1(10.3.4-1)DATAS SEGMENT INF1 DB 0AH,0DH,Are you really want to exit?$ inf2 db 0ah,0dh,Thank you for using!$ inf3 db 0ah,0dh,Lets continue!$ inf4 db 0ah,0dh,You press an error key!$DATAS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKSSTART: MOV AX,DATAS MOV DS,AX mov dx,OFFSET inf1 mov ah,09h int 21h mov ah,01h int 21h and al,0dfh ;屏蔽掉左起第3位,即将大小写都转化为大写 CMP AL,59H JZ LOOPER1 ;输入Y或Y,转LOOPER,否则继续向下运行 CMP AL,4EH JZ LOOPER2 MOV DX,OFFSET INF4 MOV AH,09H INT 21H JMP EXIT LOOPER1:MOV DX,OFFSET INF2 MOV AH,09H INT 21H JMP EXIT LOOPER2:MOV DX,OFFSET INF3 MOV AH,09H INT 21H EXIT:MOV AH,4CH INT 21HCODES ENDS END START;学习指导书P157-1(10.3.4-1)另解DATAS SEGMENT INF1 DB 0AH,0DH,Are you really want to exit?$ inf2 db 0ah,0dh,Thank you for using!$ inf3 db 0ah,0dh,Lets continue!$ inf4 db 0ah,0dh,You press an error key!$DATAS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKSSTART: MOV AX,DATAS MOV DS,AXABC1 MACRO OPPR ;将9号功能号定义为一宏指令,先定义后引用 mov dx,OFFSET OPPR mov ah,09h int 21h ENDM ABC1 INF1 ;宏调用 mov ah,01h int 21h and al,0dfh ;屏蔽掉左起第3位,即将大小写都转化为大写 CMP AL,59H JZ LOOPER1 ;输入Y或Y,转LOOPER,否则继续向下运行 CMP AL,4EH JZ LOOPER2 ABC1 INF4 ;宏调用 JMP EXIT LOOPER1:ABC1 INF2 ;宏调用 JMP EXIT LOOPER2:ABC1 INF3 ;宏调用 EXIT:MOV AH,4CH INT 21HCODES ENDS END START;学习指导书P157-2(10.3.4-2)DATAS SEGMENT INF1 DB 0AH,0DH,1-Panda$ inf2 db 0ah,0dh,2-Cat$ inf3 db 0ah,0dh,3-Rabbit$ inf4 db 0ah,0dh,4-Pig$ INF5 DB 0AH,0DH,5-EXIT$ INF6 DB 0AH,0DH,(Please choose 1,2,3,4 or 5)$ INF7 DB 0AH,0DH,I LIKE PANDA$ INF8 DB 0AH,0DH,I LIKE CAT$ INF9 DB 0AH,0DH,I LIKE RABBIT$ INF10 DB 0AH,0DH,I DONT LIKE PIG$ INF11 DB 0AH,0DH,You press an error key!$DATAS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKSSTART: MOV AX,DATAS MOV DS,AXABC MACRO OPPR ;宏定义 MOV DX,OFFSET OPPR MOV AH,09H INT 21H ENDM ABC INF1 ;宏调用 ABC INF2 ABC INF3 ABC INF4 ABC INF5 ABC INF6 MOV AH,01H ;接收一字符 INT 21H cmp al,1 je looper1 cmp al,2 je looper2 cmp al,3 je looper3 cmp al,4 je looper4 cmp al,5 je looper5 ABC INF11 JMP EXITlooper1:abc inf7 jmp exitlooper2:abc inf8 jmp exitlooper3:abc inf9 JMP EXITLOOPER4:ABC INF10 JMP EXITLOOPER5:JMP EXIT exit:MOV AH,4CH INT 21HCODES ENDS END START;10.4实验源程序(基本型)data SEGMENT INf1 DB please input a number(0-65536):$ ibuf DB 7,0,6 DUP(?) obuf DB 6 DUP(?) INf2 DB 0ah,0dh,1+2+.+n=$ data ENDScode SEGMENT ASSUME CS:code,DS:datastart: MOV AX,data MOV DS,AX MOV DX,OFFSET INf1 MOV AH,09h INT 21h MOV DX,OFFSET ibuf MOV AH,0ah INT 21h MOV CL,ibuf+1 MOV CH,0 MOV SI,OFFSET ibuf+2 MOV AX,0again: MOV DX,10 MUL DX AND BYTE PTR SI,0fh ADD AL,SI ADC AH,0 INC SI LOOP again MOV CX,AX MOV AX,0 MOV BX,1LOOP2: ADD AX,BX INC BX LOOP LOOP2 PUSH AX MOV DX,OFFSET INf2 MOV AH,09h INT 21h POP AX MOV BX,OFFSET obuf+5 MOV BYTE PTR BX,$ MOV CX,10LOOP1: MOV DX,0 DIV CX ADD DL,30h DEC BX MOV BX,DL OR AX,AX JNZ LOOP1 MOV DX,BX MOV AH,09h INT 21h MOV AH,01H INT 21H MOV AH,4ch INT 21h code ENDS END start;10.4实验源程序(改进型一)DATA SEGMENTINF1 DB Please input a number (0 - 65535): $;INF2 DB 0AH,0DH,1+2+.+$;INF3 DB =$;IBUF DB 7,0,6 DUP(?)OBUF DB 6 DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV DX,OFFSET INF1MOV AH,09HINT 21HMOV DX,OFFSET IBUFMOV AH,0AHINT 21HMOV CL,IBUF+1MOV CH,0MOV SI,OFFSET IBUF+2MOV AX,0AGAIN:MOV DX,10MUL DXAND BYTE PTR SI,0FHADD AL,SIADC AH,0INC SILOOP AGAINPUSH AXMOV CX,AXMOV AX,0MOV BX,1LOOP2:ADD AX,BXINC BXLOOP LOOP2;PUSH AX;DEC BX;MOV AX,BXMOV BX,AXPOP AXPUSH BXPUSH BX;MOV BX,OFFSET OBUF+5MOV BYTE PTR BX,$MOV CX,10LOOP1:MOV DX,0DIV CXADD DL,30HDEC BXMOV BX,DLOR AX,AXJNZ LOOP1MOV DX,OFFSET INF2MOV AH,09HINT 21HMOV DX,BXMOV AH,09HINT 21H;MOV AX,SIPOP AXMOV BX,OFFSET OBUF+5MOV BYTE PTR BX,$MOV CX,10LOOP3:MOV DX,0DIV CXADD DL,30HDEC BXMOV BX,DLOR AX,AXJNZ LOOP3MOV DX,OFFSET INF3MOV AH,09HINT 21HMOV DX,BXMOV AH,09HINT 21HMOV AH,01HINT 21HMOV AH,4CHINT 21HCODEENDSEND START;10.4实验源程序(改进型二)DATA SEGMENTINF1 DB PLEASE INPUT A NUM(0-65535):$IBUF DB 7,0,6 DUP(?)OBUF DB 6 DUP(?)CHANGE DB 0AH,0DH, 1+2+.+$ TEMP DB 6 DUP(?) DEN DB =$ DATAENDSCODESEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV DX,OFFSET INF1MOV AH,09HINT 21HMOV DX,OFFSET IBUFMOV AH,0AHINT 21HMOV DX,OFFSET CHANGEMOV AH,09HINT 21HMOV CL,IBUF+1MOV CH,0MOV SI,OFFSET IBUF+2MOV AX,0AGAIN:MOV DX,10MUL DXAND BYTE PTRSI,0FHADD AL,SIADC AH,0INC SILOOP AGAIN PUSH AX MOV BX,OFFSET TEMP+5MOV BYTE PTRBX,$MOV CX,10LOOPX:MOV DX,0DIV CXADD DL,30HDEC BXMOV BX,DLOR AX,AXJNZ LOOPX MOV DX,BXMOV AH,09HINT 21H MOV DX,OFFSET DEN MOV AH,09HINT 21H POP AXMOV CX,AXMOV AX,0MOV BX,1LOOP2:ADD AX,BXINC BXLOOP LOOP2MOV BX,OFFSET OBUF+5MOV BYTE PTRBX,$MOV CX,10LOOP1:MOV DX,0DIV CXADD DL,30HDEC BXMOV BX,DLOR AX,AXJNZ LOOP1 MOV DX,BXMOV AH,09HINT 21H MOV AH,01HINT 21H MOV AH,4CHINT 21HCODEENDSEND START;10.4实验源程序(改进型一),利用2号功能号将n用输入的数字代替DATA SEGMENTINF1 DB Please input a number (0 - 626): $;INF2 DB 0AH,0DH,1+2+.+$; ;为了使式子中n的值以具体的输入数代替,需要分段输出INF3 DB =$;IBUF DB 7,0,6 DUP(?)OBUF DB 6 DUP(?) ;定义一空间存储待显示的字符串(以ASCII码形式存放)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV DX,OFFSET INF1MOV AH,09HINT 21HMOV DX,OFFSET IBUFMOV AH,0AHINT 21HMOV CL,IBUF+1 ;将输入的数十进制数转换成二进制数MOV CH,0PUSH CXMOV SI,OFFSET IBUF+2PUSH SIMOV AX,0AGAIN:MOV DX,10MUL DXAND BYTE PTR SI,0FHADD AL,SIADC AH,0INC SILOOP AGAINPUSH AX ;输入数以二进制形式放在AX中,AX入栈MOV CX,AX ;求累加和,放在AX中MOV AX,0MOV BX,1LOOP2:ADD AX,BXINC BXLOOP LOOP2MOV BX,AX ;BX中放累加和POP AX ;恢复AX中的内容(输入数)对应的二进制数MOV DX,OFFSET INF2MOV AH,09HINT 21HPOP SI ;利用DOS的2号功能号,将n用输入数代替POP CXKK:MOV DL,SI ADD DL,30H ;虽然原来SI中的内容是数字对应的ASCII码,但后面有对该单元的高位进行清0的指令AND BYTE PTR SI,0FHMOV AH,02HINT 21HINC SILOOP KKPUSH BX POP AX ;将BX中累加和传递给AX,为累加的9号功能输出做准备MOV BX,OFFSET OBUF+5 ;二进制数转换成十进制数,入口参数为AX,转换后的数(出口参数)放在以OBUF为开始地址的6个单元中,构造DOS9号功能号的输出格式(含$).MOV BYTE PTR BX,$ ;注:ASCII码为0时,没有代表任何的字符(NUL),即此时没有任何的输出MOV CX,10LOOP3:MOV DX,0DIV CXADD DL,30HDEC BXMOV BX,DLOR AX,AXJNZ LOOP3MOV DX,OFFSET INF3 ;输出=号MOV AH,09HINT 21HMOV DX,BX ;输出累加和MOV AH,09HINT 21HMOV AH,01HINT 21HMOV AH,4CHINT 21HCODEENDSEND START;10.4实验源程序(改进型一),利用9号功能号将n用输入的数字代替DATA SEGMENTINF1 DB Please input a number (0 - 627): $;INF2 DB 0AH,0DH,1+2+.+$; ;为了使式子中n的值以具体的输入数代替,需要分段输出INF3 DB =$;IBUF DB 7,0,6 DUP(?)OBUF DB 6 DUP(?) ;定义一空间存储待显示的字符串(以ASCII码形式存放)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV DX,OFFSET INF1MOV AH,09HINT 21HMOV DX,OFFSET IBUFMOV AH,0AHINT 21HMOV CL,IBUF+1 ;将输入的数十进制数

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论