




已阅读5页,还剩15页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
案例1判断闰年程序说明:这是一个判断某一年是否为润年的程序,运行可执行程序Ifleap.exe后,输入具体的年份,可输出是本年是否为闰年的提示信息。源码: Delphi代码data segment ;定义数据段 infon db 0dh,0ah,Please input a year: $ Y db 0dh,0ah,This is a leap year! $ N db 0dh,0ah,This is not a leap year! $ w dw 0 buf db 8 db ? db 8 dup(?) data ends stack segment stack db 200 dup(0) stack ends code segment assume ds:data,ss:stack,cs:code start:mov ax,data mov ds,ax lea dx,infon ;在屏幕上显示提示信息 mov ah,9 int 21h lea dx,buf ;从键盘输入年份字符串 mov ah,10 int 21h mov cl, buf+1 lea di,buf+2 call datacate call ifyears jc a1 lea dx,n mov ah,9 int 21h jmp exit a1: lea dx,y mov ah,9 int 21h exit: mov ah,4ch int 21h datacate proc near; push cx; dec cx lea si,buf+2 tt1: inc si loop tt1 ;lea si,cxdi pop cx mov dh,30h mov bl,10 mov ax,1 l1: push ax sub byte ptr si,dh mul byte ptr si add w,ax pop ax mul bl dec si loop l1 ret datacate endp ifyears proc near push bx push cx push dx mov ax,w mov cx,ax mov dx,0 mov bx,4 div bx cmp dx,0 jnz lab1 mov ax,cx mov bx,100 div bx cmp dx,0 jnz lab2 mov ax,cx mov bx,400 div bx cmp dx,0 jz lab2 lab1: clc jmp lab3 lab2: stc lab3: pop dx pop cx pop bx ret ifyears endp code ends end start 案例2数字方阵程序 说明: 该程序实现显示一个数字的方阵,程序中的清屏功能可将上次运行的结果清除,重新显示下次运行结果。本程序在dos中或windows98中运行。 Delphi代码data segment buf1 db 1 2 38 9 47 6 5 buf2 db 1 2 3 412 13 14 511 16 15 610 9 8 7 buf3 db 1 2 3 4 516 17 18 19 615 24 25 20 714 23 22 21 813 12 11 10 9 dbuf db 14 dup(?) i1 db 0dh,0ah,this is a fangzhen programme db 0dh,0ah,input q to exit db 0dh,0ah,Please input a number(3-5):,$ i2 db 0dh,0ah,input error,please reinput!,$ n db ? b db 1 data ends stack segment db 100 dup(?) stack ends code segment assume ds:data,cs:code,ss:stack main: mov ax,data mov ds,ax call clear lop: lea dx,i1 mov ah,9 int 21h mov ah,1 int 21h cmp al,q jz quit lea si,buf1 mov n,7 mov cl,3 call clear cmp al,3 jz s lea si,buf2 mov n,10 mov cl,4 cmp al,4 jz s lea si,buf3 mov cl,5 mov n,13 cmp al,5 jz s lea dx,i2 mov ah,9 int 21h call clear jmp lop s: mov bl,n lea di,dbuf l: mov al,si mov di,al inc si inc di dec bl jne l mov di,byte ptr $ mov ah,2 mov dh,b mov dl,0 int 10h lea dx,dbuf mov ah,9 int 21h inc b loop s jmp lop quit: mov ah,4ch int 21h ;*清屏* clear proc near push ax push bx push cx push dx mov ah,6 mov al,0 mov ch,0 mov cl,0 mov dh,24 mov dl,79 mov bh,7 int 10h pop dx pop cx pop bx pop ax ret clear endp code ends end main 案例3计算平台长度程序说明:这是一个计算数字平台长度的程序,如:运行时输入:111122333,结果为: 4 1111注:本程序在dos中或windows98中运行。 Delphi代码data segment obf db * welcome you !*,0dh,0ah db input data:,$ a0 db ? a1 db ? b0 db ? b1 db ? a db ? b db ? data ends stack segment stack db 200 dup(0) stack ends code segment assume cs:code, ds:data,ss:stack main:mov ax, data mov ds, ax mov ah, 9 lea dx, obf int 21h inc dx mov dl, 13 mov ah, 2 int 21h mov dl,10 int 21h mov ah,1 int 21h cmp al, 13 jz lab1 mov a0, al mov a, al mov a1, 1 x1: mov ah, 1 int 21h cmp al, 13 jz lab1 mov b, al mov bl, b cmp bl, a jnz x2 add a1, 1 jmp x1 x2: mov b0, bl mov b1, 1 x3: mov ah, 1 int 21h mov a, al cmp bl,a jnz x4 add b1,1 jmp x3 x4: mov cl, b1 cmp cl, a1 jb y1 mov cl, b0 mov a0, cl mov cl, b1 mov a1,cl y1: cmp al, 13 jz lab1 mov b0, al mov b1, 1 mov b, al mov bl, b jmp x3 lab1: mov ah, 2 mov dl,13 int 21h mov dl,10 int 21h cmp a1,10 jb z1 mov ah,0 mov al, a1 mov bl, 10 div bl add ax, 3030h mov bx, ax mov ah, 2 mov dl, bl int 21h mov dl, bh int 21h jmp z2 z1: add a1, 30h mov dl, a1 int 21h sub a1,30h z2: mov ah,2 mov dl, 13 int 21h mov dl, 10 int 21h mov cx, 0 mov cl, a1 mov ah, 2 m: mov dl,a0 int 21h loop m mov ah, 4ch int 21h code ends end main 案例4加减乘除四则运算说明:这是从网上下载下来的一个计算程序,能实现加、减、乘、除的计算。该程序接受的是16进制数。执行时,需在文件名后直接跟上计算表达式,如在命令提示符下执行结果如下:c:masmjs 3+25c:masmjs 6*72Ac:masmjs 10-4cc:masmjs 12/36 Delphi代码B_P EQU BYTE PTR W_P EQU WORD PTR D_P EQU DWORD PTR CODE SEGMENT ASSUME CS:CODE,DS:CODE ORG 100H ;主程序开始 NEWSTAR: JMP STAR EVEN NUM1 DW 0,0 NUM2 DW 0,0 NUM3 DW 0,0 JGV4 DW 0,0 YSF LABEL WORD YSF1 DB 0 YSF2 DB 0 JUV DB 0 UV DB 0 ;使DS:SI指向第一有效字符 OVERS LABEL NEAR CLD PUSH AX OVERS1: LODSB CMP AL, JZ OVERS1 CMP AL,9 JZ OVERS1 DEC SI CMP AL,13 POP AX RET ;输出一个制表符 TAB LABEL NEAR MOV AL,9 JMP SHORT DISP ;输出一个回车换行符 CRLF LABEL NEAR MOV AL,13 CALL DISP MOV AL,10 ;显示一个字符 DISP LABEL NEAR PUSH AX PUSH DX MOV AH,2 MOV DL,AL INT 21H POP DX POP AX RET ;检查是否为运算符 ISYSF LABEL NEAR CLD LODSB CALL ISJJ JZ ISYSF1 CALL ISII JZ ISYSF1 DEC SI ISYSF1: RET ;检查是否是加减运算 ISJJ LABEL NEAR CMP AL,+ JZ ISYSF1 CMP AL,- RET ;检查是否为乘除运算 ISII LABEL NEAR CMP AL,* JZ ISYSF1 CMP AL,/ JZ ISYSF1 CMP AL, RET ;数据输出 ;CX=10 十进制 ;CX=16 十六进制 DOUT LABEL NEAR PUSH AX PUSH BX PUSH DX PUSH BP XOR BP,BP DOUT1: INC BP PUSH AX MOV AX,DX XOR DX,DX DIV CX MOV BX,AX POP AX DIV CX PUSH DX MOV DX,BX OR BX,AX JNZ DOUT1 DOUT2: POP AX ADD AL,0 CMP AL,9 JBE DOUT3 ADD AL,A-9-1 DOUT3: CALL DISP DEC BP JNZ DOUT2 POP BP POP DX POP BX POP AX RET ;输入数据在DX:AX中返回 ;CX=0 数据为10进制 ;CX#0 数据为16进制 DATE LABEL NEAR PUSH BX PUSH BP PUSH DI XOR AX,AX XOR DX,DX DATE1: MOV DI,AX LODSB CMP AL,0 JB DATE7 CMP AL,9 JA DATE6 DATE2: AND AX,0FH SHL DI,1 RCL DX,1 MOV BX,DI MOV BP,DX SHL DI,1 RCL DX,1 SHL DI,1 RCL DX,1 JCXZ DATE3 SHL DI,1 RCL DX,1 Jmp short DATE4 DATE3: ADD DI,BX ADC DX,BP DATE4: ADD AX,DI ADC DX,0 JMP DATE1 DATE5: ADD AL,9 JMP DATE2 DATE6: JCXZ DATE7 CMP AL,A JB DATE7 CMP AL,F JBE DATE5 CMP AL,a JB DATE7 CMP AL,f JBE DATE5 DATE7: MOV AX,DI DEC SI OR DI,DX POP DI POP BP POP BX RET ;数据1与数据2根据YSF1进行加减运算 JSJJ LABEL NEAR MOV AX,NUM2 MOV DX,NUM2+2 CMP YSF1,+ JZ JSJJ1 SUB NUM1,AX SBB NUM1+2,DX JMP SHORT JSJJ2 JSJJ1: ADD NUM1,AX ADC NUM1+2,DX JSJJ2: RET ;数据1与数据2根据YSF1进行乘除运算 JSII1 LABEL NEAR MOV BX,OFFSET NUM1 JMP SHORT JSII2_1 ;数据2与数据3根据YSF2进行乘除运算 JSII2 LABEL NEAR MOV BX,OFFSET NUM2 JSII2_1: DB 66H MOV AX,BX DB 66H MOV CX,BX+4 CMP YSF2,* JNZ JSII2_2 DB 66H IMUL CX JMP SHORT JSII2_3 JSII2_2: DB 66H CWD DB 66H IDIV CX CMP YSF2,/ JZ JSII2_3 DB 66H XCHG DX,AX JSII2_3: DB 66H MOV BX,AX RET ;显示结果 XUJG LABEL NEAR MOV AX,JGV4 MOV DX,JGV4+2 MOV CX,10 CMP UV,10 JZ XUJG0 MOV CX,16 XUJG0: TEST DX,8000H JZ XUJG1 CMP UV,10 JZ XUJG2 CALL DOUT XUJG2: NOT AX NOT DX ADD AX,1 ADC DX,0 PUSH AX CMP UV,10 JZ XUJG3 MOV AL, CALL DISP MOV AL,( CALL DISP XUJG3: MOV AL,- CALL DISP POP AX CMP UV,10 JZ XUJG1 CALL DOUT MOV AL,) CALL DISP RET XUJG1: CALL DOUT RET ;计算结果放入DX:AX中 JSJG LABEL NEAR CALL JSJJ MOV AX,NUM1 MOV DX,NUM1+2 RET ;从DS:SI处取一个数据 LOADATE LABEL NEAR LODSB CMP AL,( JZ LOADATE1 DEC SI PUSH CX XOR CX,CX CMP UV,10 JZ LOADATE0 INC CX ;取16进制数 LOADATE0: CALL DATE ;取数据放入DX:AX中 POP CX RET LOADATE1: PUSH NUM1 ;保存数据1数据2及运算符 PUSH NUM1+2 PUSH NUM2 PUSH NUM2+2 PUSH YSF INC JUV MOV JGV4,0 ;结果值清零 MOV JGV4+2,0 ;进行四则运算 SZYS LABEL NEAR CALL ISYSF ;首字符是运算符? JZ SZYS2 CALL LOADATE ;不是,取数并保存 MOV NUM1,AX MOV NUM1+2,DX SZYS1: XOR AX,AX ;数据2清零 MOV NUM2,AX MOV NUM2+2,AX CALL ISYSF ;下个是运算符? JZ SZYS3 JNZ SZYS6 SZYS2: PUSH AX MOV AX,JGV4 ;将结果作为数据1 MOV NUM1,AX MOV AX,JGV4+2 MOV NUM1+2,AX POP AX SZYS3: MOV YSF1,AL MOV YSF2,AL CALL ISJJ ;是加减运算转 JZ SZYS4 CALL LOADATE ;取数据2 MOV NUM2,AX MOV NUM2+2,DX CALL JSII1 ;数据1与数据2根据YSF1进行乘除运算 JMP SZYS1 ; 结果保存在数据1中 SZYS4: CALL LOADATE ;取数据2并保存 MOV NUM2,AX MOV NUM2+2,DX SZYS4_1: CALL ISYSF JNZ SZYS6 CALL ISJJ ;运算符2是加减运算? JNZ SZYS5 ;不是转 PUSH AX CALL JSJJ ;数据1与数据2根据YSF1进行加减运算 POP AX ; 结果保存在数据1中 MOV YSF1,AL ;保存新的运算符 JMP SZYS4 SZYS5: MOV YSF2,AL ;保存运算符2 CALL LOADATE ;取数据3 MOV NUM3,AX MOV NUM3+2,DX CALL JSII2 ;数据2与数据3根据YSF2进行乘除运算 JMP SZYS4_1 ; 结果保存在数据2中 SZYS6: MOV CL,AL CMP AL,13 JNZ SZYS9 SZYS7: CALL JSJG CMP JUV,0 JZ SZYS8 DEC JUV POP YSF POP NUM2+2 POP NUM2 POP NUM1+2 POP NUM1 RET SZYS8: CMP CL,) JZ SZYS10 MOV JGV4,AX MOV JGV4+2,DX JNZ SZYS12 SZYS9: CMP AL,) JNZ SZYS11 INC SI JMP SZYS7 SZYS10: MOV NUM1,AX MOV NUM1+2,DX JMP SZYS1 SZYS11: STC RET SZYS12: CLC RET ;数制处理 UVIL LABEL NEAR PUSH SI UVIL1: LODSB CMP AL, JZ UVIL2 CMP AL,9 JZ UVIL2 CMP AL,13 JZ UVIL4 JNZ UVIL1 UVIL2: MOV BX,SI
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《2022-2023年度七下英语科质量检测卷二》
- 牛津树-自然拼读-等级2-level 2 -U2-Lesson1
- 部编版二年级上册第六单元《大禹治水》教案
- 建筑施工特种作业-建筑起重机械安装拆卸工(物料提升机)真题库-3
- 建筑施工特种作业-高处作业吊篮安装拆卸工真题库-3
- 山东卫视招聘题目及答案
- 散文妈妈题目大全及答案
- 软件研发答辩题目及答案
- 5 2 平面向量的数量积-2026版53高考数学总复习A版精炼
- 2023-2024学年云南省高二下学期期末教学模拟考试数学试题(解析版)
- GA/T 2160-2024法庭科学资金数据检验规程
- 2024北京西城区五年级(下)期末语文试题及答案
- 2025至2030中国ORC低温余热发电系统行业发展前景预测与投资建议研究报告
- 2025年湖南新宁县城市建设投资开发有限公司招聘笔试参考题库含答案解析
- 中西医协同“旗舰”医院建设项目实施方案(仅供参考)
- 美容皮肤科试题及答案
- 2025春季学期国开电大本科《人文英语3》一平台在线形考综合测试(形考任务)试题及答案
- 中国不锈钢橱柜行业市场发展现状及前景趋势与投资分析研究报告(2024-2030)
- 煤层灭火施工方案
- 国开离散数学(本)·形考任务1-3试题及答案
- 2025年湖北省中考历史模拟试卷附答案
评论
0/150
提交评论