实验5.5,程序这样写可以吗?---新人可以一看解决方法有详细al,ax,add bx2,inc bx讲解
本帖最后由 axix005 于 2015-8-9 14:07 编辑实验5 编写、调试具有多个段的程序
(5)程序如下,编写code段中代码,将a段和b段中的数据依次相加,将结果存到C段中。
assume cs:code
a segment
db 1,2,3,4,5,6,7,8
a ends
b segment
db 1,2,3,4,5,6,7,8
b ends
c segment
db 0,0,0,0,0,0,0,0
c ends
code segment
start:mov ax,a
mov ds,ax
mov ax,b
mov ss,ax
mov ax,c
mov es,ax
mov bx,0
mov cx,8
s:mov ax,ds:
add ax,ss:
add es:,ax
inc bx
loop s
mov ax,4c00h
int 21h
code ends
end start
讲解在4楼 我跟你的思路是一样的不过好像不行的样子,同求高手前辈指教 七煞 发表于 2015-8-7 14:52
我跟你的思路是一样的不过好像不行的样子,同求高手前辈指教
怎么不行?? 用 MASM 5.0 编译一下,即可显示有错无错。
千万别用 MASM 6.0 以上的版本。
追问:
今天 02:29 masm能生成程序,就是不知道这样能不能达到问题目的
追答:
今天 10:50 S:
MOV AX, DS:----AX ?应该用 AL。
ADD AX, SS:
ADD ES:, AX----用 MOV 更符合题意。
INC BX
LOOPS
程序结构正确。
只是,参加运算的,应该是字节,不是字。
那么,程序的 AX,可改为 AL。
追问:
26 分钟前 ADD ES:, AX----用 MOV 更符合题意。--------明白了。把相加的结果移动到c段,是我没认真看题,哈哈谢谢指出
为什么ax不能参加运算???
a段和b段中的数据依次相加。。里面的是两个字节不是一个字吗?
呵呵,新人不明白麻烦大哥讲解了!!!!
追答:
11 分钟前 在 A 段、B 段,你所定义的数字,都是字节。
程序中,就应该用字节(如 AL),进行计算。
--------------------
你要是用 DW 定义,这就是字,才应该用 AX 计算加法。
此时,INCBX,应该改为:ADDBX, 2。
原来如此多谢指教,自己又张姿势了{:1_1:}
看不清楚题目成了自己的老毛病了
页:
[1]