本文为《汇编语言程序设计》1102小节例程。点击链接…进课程主页。
编写一个子程序,对两个128位数据进行相加。
名称:add128
功能:两个逆序存放的128位数据进行相加
assume cs:code,ds:data
;这里的128位在data空间中是逆序放置的,就是从低位到高位排列的
data segment
dw 0A452H, 0A8F5H, 78E6H, 0A8EH, 8B7AH, 54F6H, 0F04H, 671EH
dw 0E71EH, 0EF04H, 54F6H, 8B7AH, 0A8EH, 78E6H, 58F5H, 0452H
data ends
code segment
start : mov ax,data
mov ds,ax
mov si,0
mov di,16
mov cx,8
call add128
mov ax,4c00h
int 21h
;编写一个子程序,对两个128位数据进行相加。
;名称:add128
;功能:两个128位数据进行相加
;参数:
; ds:si指向存储第一个数的内存空间,因数据为128位,所以需要8个字单元,由低地址单元到高地址单元依次存
; 放128位数据由低到高的各个字。运算结果存储在第一个数的存储空间中。
; ds:di指向存储第二个数的内存空间
add128: push ax
push cx
push si
push di
sub ax,ax ;将CF设置为0
s:mov ax,[si]
adc ax,[di]
mov [si],ax
inc si
inc si
inc di
inc di
loop s
pop di
pop si
pop cx
pop ax
ret
code ends
end start