![]() |
#2
zklhp2012-10-02 21:57
|

有兴趣大家可以看下 讨论下更好的办法。。。
先上结果图

只有本站会员才能查看附件,请 登录

;#Mode=DOS
;MASMPlus 单文件代码模板 - 纯 DOS 程序
;--------------------------------------------------------------------
;单个文件需要指定编译模式,否则默认是EXE方式,在系统设置中可以设置默认是DOS还是Windows.
;编译模式自带了DOS/COM/CON/EXE/DLL/LIB这几种,如果有必要,可以更改ide.ini添加新的编译模式
;当然,更好的是创建为一个工程.更方便及易于管理,使用方法:按Ctrl多选->创建工程.必须有多个文件
assume cs:code, ds:data, ss:stack
stack segment
dw 200 dup(?)
stack ends
data segment
stra db 'Please input a: ', '$'
strb db 'Please input b: ', '$'
strc db 'The resut a + b = ', '$'
bufa db 100
lena db ?
db 100 dup(?)
bufb db 100
lenb db ?
db 100 dup(?)
tempa db 101 dup(0)
tempb db 101 dup(0)
rslt db 200 dup(0)
data ends
code segment
start: mov ax, data
mov ds, ax
mov es, ax
mov ax, stack
mov ss, ax
mov sp, 200
mov dx, offset stra
mov ah, 9
int 21h
mov ah, 10
mov dx, offset bufa
int 21h
mov cl, lena
mov ch, 0
mov si, offset bufa
add si, cx
inc si
mov di, offset tempa
convert_stra: mov dl, BYTE ptr [si]
sub dl, 30h
mov BYTE ptr [di], dl
dec si
inc di
loop convert_stra
call crlf
mov dx, offset strb
mov ah, 9
int 21h
mov dx, offset bufb
mov ah, 10
int 21h
mov cl, lenb
mov ch, 0
mov di, offset tempb
mov si, offset bufb
add si, cx
inc si
convert_strb: mov dl, BYTE ptr [si]
sub dl, 30h
mov BYTE ptr [di], dl
dec si
inc di
loop convert_strb
mov ch, 0
mov cl, lena
cmp cl, lenb
ja addnow
mov cl, lenb
addnow: add cx, 1
mov dx, cx
mov bl, 0
mov si, offset tempa
mov di, offset tempb
addloop: mov al, BYTE ptr [si]
add al, BYTE ptr [di]
add al, bl
cmp al, 9
ja adjust
mov bl, 0
jmp notadj
adjust: add al, 6
and al, 00001111b
mov bl, 1
notadj: add al, 30h
mov ah, 0
push ax
inc di
inc si
loop addloop
mov si, offset rslt
pop bx
cmp bl, '0'
je storerslt
mov BYTE ptr [si], bl
inc si
storerslt: mov cx, dx
dec cx
storeloop: pop bx
mov BYTE ptr [si], bl
inc si
loop storeloop
mov al, '$'
mov BYTE ptr [si], al
call crlf
mov dx, offset strc
mov ah, 9
int 21h
mov dx, offset rslt
mov ah, 9
int 21h
mov ah, 1
int 21h
mov ah, 4ch
int 21h
crlf: mov dl, 13
mov ah, 2
int 21h
mov dl, 10
mov ah, 2
int 21h
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
stack segment
dw 200 dup(?)
stack ends
data segment
stra db 'Please input a: ', '$'
strb db 'Please input b: ', '$'
strc db 'The resut a + b = ', '$'
bufa db 100
lena db ?
db 100 dup(?)
bufb db 100
lenb db ?
db 100 dup(?)
tempa db 101 dup(0)
tempb db 101 dup(0)
rslt db 200 dup(0)
data ends
code segment
start: mov ax, data
mov ds, ax
mov es, ax
mov ax, stack
mov ss, ax
mov sp, 200
mov dx, offset stra
mov ah, 9
int 21h
mov ah, 10
mov dx, offset bufa
int 21h
mov cl, lena
mov ch, 0
mov si, offset bufa
add si, cx
inc si
mov di, offset tempa
convert_stra: mov dl, BYTE ptr [si]
sub dl, 30h
mov BYTE ptr [di], dl
dec si
inc di
loop convert_stra
call crlf
mov dx, offset strb
mov ah, 9
int 21h
mov dx, offset bufb
mov ah, 10
int 21h
mov cl, lenb
mov ch, 0
mov di, offset tempb
mov si, offset bufb
add si, cx
inc si
convert_strb: mov dl, BYTE ptr [si]
sub dl, 30h
mov BYTE ptr [di], dl
dec si
inc di
loop convert_strb
mov ch, 0
mov cl, lena
cmp cl, lenb
ja addnow
mov cl, lenb
addnow: add cx, 1
mov dx, cx
mov bl, 0
mov si, offset tempa
mov di, offset tempb
addloop: mov al, BYTE ptr [si]
add al, BYTE ptr [di]
add al, bl
cmp al, 9
ja adjust
mov bl, 0
jmp notadj
adjust: add al, 6
and al, 00001111b
mov bl, 1
notadj: add al, 30h
mov ah, 0
push ax
inc di
inc si
loop addloop
mov si, offset rslt
pop bx
cmp bl, '0'
je storerslt
mov BYTE ptr [si], bl
inc si
storerslt: mov cx, dx
dec cx
storeloop: pop bx
mov BYTE ptr [si], bl
inc si
loop storeloop
mov al, '$'
mov BYTE ptr [si], al
call crlf
mov dx, offset strc
mov ah, 9
int 21h
mov dx, offset rslt
mov ah, 9
int 21h
mov ah, 1
int 21h
mov ah, 4ch
int 21h
crlf: mov dl, 13
mov ah, 2
int 21h
mov dl, 10
mov ah, 2
int 21h
ret
code ends
end start
特别是对我这种爱帖程序的人 伤不起啊

[ 本帖最后由 有容就大 于 2012-10-2 22:04 编辑 ]