
这样吧,给你举个例子,比方说……难一点的345+346+347首先把45,46,47拿出来,就是300+300加300900算出来了,再把5,6,7拿出来,就是40+40+40=120900+120=1120,5+6+7简算,把6里面的1拿出来,把7里面的2拿出来,就是15,15加刚才的1和2,就得出结果来了。不要看着它麻烦,实际上很简单的。你掌握了就好了
第一题:
model small
stack 8192
data
pop1 dd 99887766
pop2 dd 66554433
sum dd
code
main: mov ax,@data
mov ds,ax
;这里开始是做加法的代码
mov ax,word ptr pop1
mov dx,word ptr pop1[2]
add ax,word ptr pop2
adc dx,word ptr pop2[2]
mov word ptr sum,ax
mov word ptr sum[2],dx
;至此结果放在双字变量sum中,sum与pop2是相邻的
mov ah,4ch
int 21h
end main
第二题:
model small
stack 8192
data
sum dw
sumbcd dw
code
main: mov ax,@data
mov ds,ax
xor ax,ax ;累加器清零
mov cx,99 ;cx是循环变量
lp1: add ax,cx ;从99倒着加到1,和在AX里
loop lp1
mov sum,ax ;至此sum里存了累加和本身
mov si,10 ;下面通过除以10,将该和的每个数字剥离出来、并转为BCD码存到sumbcd里
xor bx,bx ;bx里用来存bcd码结果
mov cx,4 ;转BCD时每个数字要将bx右移4位,在把AH里的余数合并到dx的最高4位上,4次之后形成整个BCD结果
lp2: xor dx,dx ;为除法清除dx内容
div si ;8位除法完成后,dx内是每次的余数,ax里是商。第一次除完余数是个位、下次是十位……
push cx ;下面移位需要用CL寄存器,但CX用来做循环控制变量,所以需要先保存一下
mov cl,4 ;这里的cl为4是用来循环用
shr bx,cl ;将BX右移4位,左边会补0
shl dl,cl ;DL左移4位,右边补零
or bh,dl ;BX左边的4个补入的0填上DL里的余数的那个数位
pop cx ;恢复CX里的循环次数
loop lp2
mov sumbcd,bx ;sumbcd里存了BCD的结果,注意是十位、个位合并为一个字节在前面、千位和百位合并为另一字节在后面
mov ah,4ch
int 21h
end main
第三题:
model small
stack 8192
data
elem db 10 dup ('0123456789')
tail equ $
code
main: mov ax,@data
mov ds,ax
mov si,offset elem ;si指针从前向后走
mov di,offset tail-1 ;di指针从后向前走
lp: cmp si,di ;比较两个指针
jge done ;如果si>=di,则头尾已经相遇了,则结束
mov al,[si] ;al里取前面指针处的内容
xchg [di],al ;和后面指针处交换
mov [si],al ;存回前面指针处
inc si ;移动前指针
dec di ;移动后指针
jmp lp ;继续下个
done:
;至此elem内容已经如要求交换完
mov ah,4ch
int 21h
end main
第四题:
model small
stack 8192
code
main: mov ax,-100
call sign
mov ax,100
call sign
mov ax,0
call sign
mov ah,4ch
int 21h
sign proc
cmp ax,0 ;ax与0作比较
jz sign1 ;是0的话直接返回(结果不用变,还是0)
mov ax,1 ;其它两种情况分别返回+1或-1,先设定为正1,注意MOV指令不影响刚才CMP比较的结果标志位
jg sign1 ;如果刚才比较得到ax>0,转返回(现在AX里是表示正数的1)
neg ax ;把AX里的1变成-1
sign1: ret ;返回,值在AX里
sign endp
end main
相邻数相加通常指某有序数列中前后紧挨着的两个数相加。
比如自然数列:
0和1、1和2、4和5、
101和102相邻;
偶数列:0和2、8和10、80和82相邻;
正方形数(完全平方数)列:
1和4、4和9、121和
144相邻。
以上就是关于小学一年级数学题相邻的三个数相加等于几快速方法全部的内容,包括:小学一年级数学题相邻的三个数相加等于几快速方法、编写程序(用汇编语言编写) 1,两个省人口数(99887766人,66554433人)相加,结果存放在相邻内存中。、相临数相加是什么意思等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)