9*9乘法表终于搞出来了,有容大哥。
rt,对于我把这个写出来,花了很多时间,也学会了很多知识,代码有待改进,向各位大牛请调。程序代码:
;#Mode=DOS ;MASMPlus 单文件代码模板 - 纯 DOS 程序 ;-------------------------------------------------------------------- ;单个文件需要指定编译模式,否则默认是EXE方式,在系统设置中可以设置默认是DOS还是Windows. ;编译模式自带了DOS/COM/CON/EXE/DLL/LIB这几种,如果有必要,可以更改ide.ini添加新的编译模式 ;当然,更好的是创建为一个工程.更方便及易于管理,使用方法:按Ctrl多选->创建工程.必须有多个文件 assume cs:code,ds:data,ss:stack data segment bmul db 0 mulshu db 0 data ends stack segment dw 128 dup(?) stack ends code segment ;寄存器初始化 start: mov ax,data mov ds,ax mov ax,stack mov ss,ax mov sp,128 mov cx,9 mov al,bmul ;ax存放被乘数 mov bl,mulshu ;bx存放乘数 mov ax,0 ;用两个循环计算并且显示 s1:inc ax mov bx,0 s2:inc bx push ax push bx add al,30h add bl,30h mov dl,al mov ah,2 int 21h mov dl,42 mov ah,2 int 21h mov dl,bl mov ah,2 int 21h mov dl,61 mov ah,2 int 21h pop bx pop ax push ax push bx mul bl call show ;显示计算结果 mov ah,02 mov dl,32 int 21h ;显示空格 pop bx pop ax cmp ax,bx jnz s2 call hh ;回车换行 loop s1 ;查看结果并返回dos mov ah,01 int 21h mov ah,4ch int 21h ; ;功能:回车换行 hh: push ax push dx mov ah,02 mov dl,0dh int 21h mov ah,02 mov dl,0ah int 21h pop dx pop ax ret ; ;功能:把乘积转换为字符 show: push dx push ax call diw ;实施除法除10获取积的各个位数 add ah,30h add al,30h push ax mov dl,al mov ah,02 int 21h pop ax mov dl,ah mov ah,02 int 21h pop dx pop ax ret ; ;功能:求积的位数,ah存放个位,al存放十位 diw: push bx mov bx,10 div bl pop bx ret code ends end start
[ 本帖最后由 小习小习 于 2012-11-8 16:32 编辑 ]