汇编大数相加。
搞了N久 搞出了大数相加,不过很原始啊 AAA指令都没用 因为不知道怎么用有兴趣大家可以看下 讨论下更好的办法。。。
先上结果图 不知道有BUG没?
程序代码:
;#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为什么 帖程序老是会不按原来的排版出现 短的还能自己改下 长的就太难看了 很多次了啊
特别是对我这种爱帖程序的人 伤不起啊
[ 本帖最后由 有容就大 于 2012-10-2 22:04 编辑 ]