用汇编语言实现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的十六进制)
以上就是本文的全部内容,希望对大家的学习有所帮助,