回复 7楼 zhu224039
结果正确吗?
MASMPlus运行后 输入一个字符就退出了。
我对这个很感兴趣 但是水平也不咋的 今天搞了半天 搞出来一个在MASMPlus下可以得到结果
不过我这个方法只能计算到四个字节(32位) 而且输入的第一个数有限制 最好不超过8个字符
可以参考下 一起研究这个东西
其实最好用字符串操作 突破范围限制 这个还不会 正在研究中。。。
程序代码:
;#Mode=DOS
;MASMPlus 单文件代码模板 - 纯 DOS 程序
;--------------------------------------------------------------------
;单个文件需要指定编译模式,否则默认是EXE方式,在系统设置中可以设置默认是DOS还是Windows.
;编译模式自带了DOS/COM/CON/EXE/DLL/LIB这几种,如果有必要,可以更改ide.ini添加新的编译模式
;当然,更好的是创建为一个工程.更方便及易于管理,使用方法:按Ctrl多选->创建工程.必须有多个文件
assume cs:code, ds:data
data segment
astr db 'Please input a:', '$'
bstr db 0dh, 0ah, 'Please input b:', '$'
cstr db 0dh, 0ah, 'a * 10 + b = ', '$'
rslt db 30 dup(?)
nums dw 0, 0, 0, 0
data ends
code segment
start: mov ax, data
mov ds, ax
mov si, offset nums
mov dx, offset astr
mov ah, 9
int 21h
aput: mov ah, 1
int 21h
cmp al, 0dh
jz bput
call multen
mov ah, 0
sub al, 30h
add [si], ax
adc [si + 2], 0
jmp aput
bput: mov dx, offset bstr
mov ah, 9
int 21h
b1: mov ah, 1
int 21h
cmp al, 0dh
jz cput
mov si, offset nums
add si, 4
call multen
mov ah, 0
sub al, 30h
add [si], ax
adc [si + 2], 0
jmp b1
cput: mov dx, offset cstr
mov ah, 9
int 21h
mov si, offset nums
call multen
mov ax, [si]
mov dx, [si + 2]
add ax, [si + 4]
adc dx, [si + 6]
mov si, offset rslt
mov di, 0
c1: mov cx, 10
call divdw
add cx, 30h
push cx
inc di
cmp ax, 0
jz c2
jmp c1
c2: cmp dx, 0
jz c3
jmp c1
c3: mov cx, di
c4:
pop ax
mov [si], al
inc si
loop c4
mov al, '$'
mov [si], al
mov dx, offset rslt
mov ah, 9
int 21h
mov ah, 1
int 21h
mov ax, 4c00h
int 21h
divdw: push si
push bx
push ax
mov ax, dx
mov dx, 0
div cx
mov si, ax
pop ax
div cx
mov cx, dx
mov dx, si
pop bx
pop si
ret
multen: push ax
push dx
xor ax, ax
shl WORD ptr [si + 2], 1
shl WORD ptr [si], 1
adc WORD ptr [si + 2], 0
mov ax, [si]
mov dx, [si + 2]
shl WORD ptr [si + 2], 1
shl WORD ptr [si], 1
adc WORD ptr [si + 2], 0
shl WORD ptr [si + 2], 1
shl WORD ptr [si], 1
adc WORD ptr [si + 2], 0
add [si], ax
adc [si + 2], dx
xor ax, ax
pop dx
pop ax
ret
code ends
end start
晕 为什么我排版整整齐齐的发上来就乱七八糟的了 很多次了 为什么啊
图片附件: 游客没有浏览图片的权限,请
登录 或
注册
[
本帖最后由 有容就大 于 2012-10-1 20:29 编辑 ]