汇编题目:计算32位二进制的加法

编程计算数字加法运算:341ef000H+61201000H,进位不能丢弃

assume cs:codesg

data segment
db 16 dup(0)
db 1eh,34h,0,0f0h    ;数字:341ef000,你也可以使用立即数
db 20h,61h,0,10h    ;数字:61201000,你也可以使用立即数
data ends

stack segment
db 100 dup(0)
stack ends

codesg segment
start:mov ax,data
mov ds,ax
mov ax,stack
mov ss,ax
mov sp,100

xor ax,ax
mov bx,0
mov bx,ds:[18]
add bx,ds:[22]
adc ax,0
add ax,ds:[16]
add ax,ds:[20]
mov ds:[0],ax
mov ds:[2],bx

mov ax,4c00h
int 21h

 

这里的指令用到了adc,它可以进行进位的加法运算。

优化:其实下面的三条语句可合成两条,因为adc加法的时候会自动把CF标志位家进来的。

adc ax,0
add ax,ds:[16]
add ax,ds:[20]
优化后:

mov ax,ds:[16]
adc ax,ds:[20]

 

posted on 2016-01-08 11:52  jack_Meng  阅读(1915)  评论(0编辑  收藏  举报

导航