用汇编语言实现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的十六进制)

以上就是本文的全部内容,希望对大家的学习有所帮助,
總bei傷嗐