汇编经典代码

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.顺序程序设计

将两个多位十进制数相加,要求被加数、加数均以ASCⅡ码形式各自顺序存放在以DATA1和DATA2为首的五个内存单元中(低位在前),结果送回DATA1处。

DATA SEGMENT

DATA1 DB 34H,35H,39H,38H,36H,' ' ;被加数

DATA2 DB 37H,34H,33H,36H,32H,' ' ;加数

DATA ENDS

CODE SEGMENT

MAIN PROC FAR

ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA

MOV DS,AX

LEA SI,DATA1 ;有效地址送SI,为调用显示子程序做准备

CALL DISPLAY ;调用显示子程序

CALL CRLF ;调用回车换行子程序

LEA SI,DATA2 ;有效地址送SI,为调用显示子程序做准备,同时为加法运算做准备

CALL DISPLAY ;调用显示子程序

CALL CRLF ;调用回车换行子程序

LEA DI,DATA1 ;有效抵制送DI,为加法运算做准备

MOV AX,0

MOV BX,0

MOV CL,05H ;记录循环次数

ADDS: MOV AL,[SI] ;将加数送往AL

SUB AL,30H

ADD AL,BL ;加上进位

MOV BL,[DI] ;将被加数送往BL

SUB BL,30H

ADD AL,BL ;加法运算

ADD AL,30H

CMP AL,3AH

JA SUBA ;结果>=10,跳到SUBA

JB NSUBA

SUBA: SUB AL,0AH ;减去10的值,并置BL为1

MOV BL,01H

JMP CONTINUE

NSUBA: MOV BL,00H ;置BL为0

CONTINUE:MOV [DI],AL ;将相加的结果从AL送往DI的地址,即DATA1的地址INC DI ;地址加1

INC SI ;地址加1

LOOP ADDS ;循环

JC SHUCHU

JNC SHUCHU2

SHUCHU2: MOV AL,31H ;CF为1设置结果最高位为1

JMP CONTINUE2

SHUCHU:MOV AL,30H ;CF为0设置结果最高位为0

CONTINUE2:MOV [DI],AL

LEA SI,DATA1 ;将DATA1的有效地址送往SI,为调用DISPLAY子程序做准备CALL DISPLAY ;调用DISPLAY子程序

MOV AX,4C00H ;返回DOS

INT 21H

MAIN ENDP

CRLF PROC NEAR ;回车、换行于功能

MOV DL,0DH

MOV AH,02H

INT 21H

MOV DL,0AH

MOV AH,02H

INT 21H

RET

CRLF ENDP

DISPLAY PROC NEAR ;显示于功能

MOV BX,0006H ;记录循环次数

DSL: MOV DL,[SI+BX-1] ;将有效地址内的内容送往DL

MOV AH,02 ;2号功能输出

INT 21H

DEC BX ;BX自动减1

JNZ DSL

RET

DISPLAY ENDP

CODE ENDS

END START

2 分支程序设计实验

接收键盘输入字符,将其中的小写字母转换为大写字母并显示。

CODE SEGMENT

MAIN PROC FAR

ASSUME CS:CODE

START: MOV AH,00H

INT 16H

CMP AL,0DH

JZ OVER

CALL JUDGE

MOV DL,AL

MOV AH,02H

INT 21H

JMP START

OVER: MOV AH,4CH

INT 21H

MAIN ENDP

JUDGE PROC NEAR

CMP AL,'a'

JB STOP

CMP AL,'z'

JA STOP

SUB AL,20H

STOP: RET

JUDGE ENDP

CODE ENDS

END START

3 循环程序设计实验

统计一个有10人的班中,男、女生的人数各为多少。将男生人数存入变量MAN、女生人数存入变量WOMAN中。DATA SEGMENT

MAN DB 0,0

WOMAN DB 0,0

STRING DB ' iuput people number! (man is 0, woman is 1 ) $'

SM DB 'man is :$'

SW DB 'woman is :$'

DATA ENDS

CODE SEGMENT

MAIN PROC FAR

ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA

MOV DS,AX

MOV AH,09H ;将STRING的内容输出

MOV DX,OFFSET STRING

INT 21H

CALL CRLF

MOV CX,10 ;男女生总人数

AA: MOV AH,01H ;从键盘输入,0为男,1为女

INT 21H

CMP AL,30H ;与'0'比较

JNZ ADDW ;不为'0',女生人数加1

INC MAN ;否则男生人数加1

BB: LOOP AA

JMP DISPLY ;打印

ADDW: INC WOMAN

JMP BB

DISPLY: CALL CRLF

MOV AH,09H ;字符串输出

MOV DX,OFFSET SM

INT 21H

MOV AH,02H ;男生人数统计结果输出

相关文档
最新文档