| 发表于:2007-10-29 23:50:379楼 得分:0 |
data segment data1 db 5 dup(?) data2 db 5 dup(?) data ends code segment assume cs:code,ds:data start: mov ax,data mov ds,ax mov cx,0000h mov si,offset data1 mov bp,offset data2 input1: mov ah,01h int 21h cmp al,0dh ;用回车判断是否输入结束 je out1 ;输入结束,转l1 mov [si],al inc si ;输入未结束,则继续输入 jmp input1 input2: mov ah,01h int 21h ;输入字符 cmp al,0dh ;用回车判断是否输入结束 je l1 ;输入结束,转l2 mov [bp],al inc bp ;输入未结束,则继续输入 jmp input2 out1: mov ah , 02h mov dl , 0ah ;lf换行不回车, int 21h mov ah,02h mov dl,'+' int 21h mov ah , 02h mov dl , 0ah ;lf换行不回车, int 21h mov dl,0dh int 21h jmp input2 l1: mov ah , 02h mov dl , 0ah ;lf换行不回车, int 21h mov ah,02h mov dl,'=' int 21h mov al , data1 + 1 ;以下是进行低位运算,cl为低位的进位 sub al , 30h mov bl , data2 + 1 sub bl , 30h add al , bl cmp al , 0ah jb lowb ;低于就转移,cf = 1 sub al , 0ah add cl , 01h ;有进位 lowb: add al , 30h mov data2 + 2 , al mov al , data1 ;以下是进行高位运算,ch为高位的进位 sub al , 30h mov bl , data2 sub bl , 30h add al , bl add al , cl ;加上低位进位 cmp al , 0ah jb highb ;低于就转移,cf = 1 sub al , 0ah mov ch , 01h highb: add al , 30h add ch , 30h mov data2 + 1 , al mov data2 , ch mov dl , data2 int 21h mov dl , data2 + 1 int 21h mov dl , data2 + 2 int 21h mov ah,4ch int 21h code ends end start 给你一个两位加法的,从键盘输入加数和被加数 | | |
|