用汇编语言实现1+2+...+100
;课堂作业
;计算1+2+...+100
DATA SEGMENT
COUNT DW 0 ;计数
DATA ENDS
STACK SEGMENT PARA STACK
BUF DW 20H DUP (0)
LEN EQU $-BUF
STACK ENDS
CODESEG SEGMENT
ASSUME CS:CODESEG,SS:STACK,DS:DATA
START:
;初始化堆栈段ss和数据段ds
MOV AX,STACK
MOV SS,AX
MOV SP,LEN
MOV AX,DATA
MOV DS,AX
MOV CX,64H ;循环100次
MOV AX,0
S:
ADD COUNT,01H
ADD AX,COUNT
LOOP S
MOV DL,AL
MOV AL,AH
CALL DISP_2_HEX
MOV AL,DL
CALL DISP_2_HEX
CALL DISP_CREF
MOV AH,4CH
INT 21H
;将AL的高四位与低四位分别输出
DISP_2_HEX:
PUSH AX
PUSH BX
PUSHF
MOV AH,0 ;清零
MOV BL,10H ;作除法
DIV BL ;AL :商 高位 AH 余数 低位
CALL DISP_1_HEX ;输出AL的结果
MOV AL,AH
CALL DISP_1_HEX
POPF
POP BX
POP AX
RET
;输出AL的数字和字母
DISP_1_HEX:
PUSH AX
PUSH DX
PUSHF
MOV DL,AL
CMP DL,09
JBE L_1 ;小于等于9则跳过下一条语句
ADD DL,27H ;大于10则转换为小写字母并执行到下面的L_1的RET结束
;数字10与字符a差为39(27H)
;数字输出(1的ascii码为31H)
L_1:
ADD DL,30H ;数字转换为字符
MOV AH,02H
INT 21H
POPF
POP DX
POP AX
RET
;输出回车换行
DISP_CREF:
PUSH DX
PUSH AX
MOV AH,02H
MOV DL,0DH
INT 21H
MOV DL,0AH
INT 21H
POP AX
POP DX
RET
CODESEG ENDS
END START
输出结果为13ba(5050的十六进制)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持html5模板网。
汇编语言 寄存器内存访问原理解析这篇文章主要介绍了汇编语言 寄存器内存访问原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具
使用汇编语言实现if else 循环函数调用的具体方法这篇文章主要介绍了使用汇编语言实现if else 循环函数调用的具体方法,文中通过示例代码介绍的非常详细,对大家的
汇编语言位向量(位映射)的实现这篇文章主要介绍了汇编语言位向量(位映射)的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作
汇编语言AND指令实现对两个操作数进行逻辑(按这篇文章主要介绍了汇编语言AND指令实现对两个操作数进行逻辑(按位)与操作,文中通过示例代码介绍的非常详细,
汇编语言mov指令及基本用法
详解汇编语言MOV指令在汇编语言中,MOV指令是数据传送指令,也是最基本的编程指令,这篇文章主要介绍了汇编语言MOV指令,需要的朋友可