汇编 循环程序的设计

来源:百度知道 编辑:UC知道 时间:2024/06/06 23:53:57
两个十六进制输相加的问题
.model small
.stack
.data
data1 db 0f3h,0a9h,3dh,0e0h,34h
data2 db 3ch,0eeh,30h,0a8h,92h
.code
.startup
clc
mov bl,4
mov cx,0000h
begin: cmp cx,bx
jl stop
mov al,byte ptr data1[bl]
adc byte ptr data2[bl],al
dec bx
jmp begin
stop: mov ah,4ch
int 21
.exit 0
end
刚学,请各位赐教
匿名回答的朋友,辛苦了,谢谢了.是因为快要上课了,所以很急忙的给出了个问题,没把问题阐述清楚,我是想找到其中的错误

这个程序不会通过编译,要把下面两条指令中的bl改成bx才能通过编译。

mov al,byte ptr data1[bl]
adc byte ptr data2[bl],al

这个程序是求和吧。
.model small ;寻址模式small,dos下small windows下flat 当然还有其他的寻址模式
.stack ;堆栈段,下面似乎没有用到堆栈 之所以定义 估计是为了避免编译器警告
.data ;数据段
data1 db 0f3h,0a9h,3dh,0e0h,34h
data2 db 3ch,0eeh,30h,0a8h,92h
.code ;代码段
.startup ;开始程序
clc ;清cf位
mov bl,4 ;送4如bl
mov cx,0000h ;cx清0
begin: cmp cx,bx ;比较bx和cx,如果bx小于cx,那么跳到stop,其实就是依次累加data1和data2的各个元素,累加完就跳出。
jl stop ;跳转指令,配合上面cmp指令使用
mov al,byte ptr data1[bl] ;传data1第5个元素入al,以后依次减一,送下一个元素
adc byte ptr data2[bl],al ;把data1的元素和data2的元素相加,送入data2
dec bx ;基值减一
jmp begin ;跳转到标号begin处
stop: mov ah,4ch ;把进程交还给command
int 21
.exit 0
end
刚学,请各位赐教