![]() |
#2
zklhp2012-11-08 16:27
|

;#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
;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 编辑 ]