1) 在数据段中依次存入10,11,12,13,14,15,16,17,将其相加,并将结果存入DX寄存器。
时间:2011-01-03
来源:互联网
data segment
data1 db 10,11,12,13,14,15,16,17
data ends
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
mov cx,8h
mov dx,0h
s:
add dx,[si]
add si,2
loop s
mov ax,4c00h
int 21h
code ends
end start
哪里错了 ?用 DEBUG跟踪 DX 值不变啊
作者: rainfoxer 发布时间: 2011-01-03
data1 db 10,11,12,13,14,15,16,17 字节单元
再说你给SI赋值了么???
这么大的错误 ... 居然没发现
作者: znxllyuan 发布时间: 2011-01-03
data1 dw 10,11,12,13,14,15,16,17
data ends
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
mov cx,8h
mov dx,0h
mov si,data1
s:
add dx,[si]
add si,2
loop s
mov ax,4c00h
int 21h
code ends
end start
这样还是不行 SI不是默认DS吗?我刚学 求教
作者: rainfoxer 发布时间: 2011-01-03
add dx,[si] 字单元
data1 db 10,11,12,13,14,15,16,17 字节单元
再说你给SI赋值了么???
这么大的错误 ... 居然没发现
data segment
data1 dw 10,11,12,13,14,15,16,17
data ends
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
mov cx,8h
mov dx,0h
mov si,data1
s:
add dx,[si]
add si,2
loop s
mov ax,4c00h
int 21h
code ends
end start
这样还是不行 SI不是默认DS吗?我刚学 求教
作者: rainfoxer 发布时间: 2011-01-03
如果把SI当做指针你得给他赋值阿~要不汇编器怎么知道SI指向哪?
mov si,offset data1
或
lea si,data1
或
mov si,0
才能指向第一个数据 10
mov si,data1
这是把 10送入了SI
data1 db 10,11,12,13,14,15,16,17
DATA1 定义的是字节型数据 所以用DL做加法
add dl,[si]
mov dh,0
否则 ADD DX,[SI] 加的就是两个字节数据了
作者: znxllyuan 发布时间: 2011-01-03
默认段前缀是DS
如果把SI当做指针你得给他赋值阿~要不汇编器怎么知道SI指向哪?
mov si,offset data1
或
lea si,data1
或
mov si,0
才能指向第一个数据 10
mov si,data1
这是把 10送入了SI
data1 db 10,11,12,13,14,15,16,17
DATA……
data1 dw 10,11,12,13,14,15,16,17
data ends
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
mov cx,8h
mov dx,0h
mov si,offset data1
s:
add dx,[si]
add si,2
loop s
mov ax,4c00h
int 21h
code ends
end start
这样行吗 ?怎么还是看不到DX的 变化 还是0000
作者: rainfoxer 发布时间: 2011-01-03
data segment
data1 db 10,11,12,13,14,15,16,17
data ends
code segment
start:
mov ax,data
mov ds,ax
xor ax,ax
mov si,offset data
mov cx,8
sum:
add dl,[bx]
adc dh,0
inc bx
loop sum
mov ah,4ch
int 21h
code ends
end start
作者: znxllyuan 发布时间: 2011-01-03
引用 4 楼 znxllyuan 的回复:
默认段前缀是DS
如果把SI当做指针你得给他赋值阿~要不汇编器怎么知道SI指向哪?
mov si,offset data1
或
lea si,data1
或
mov si,0
才能指向第一个数据 10
mov si,data1
这是把 10送入了SI
data1 db 10,11,12,13,14,15,16,17
DAT……
4楼已经解释的很清楚了 数据类型要匹配
6 楼是标准的
作者: znxllyuan 发布时间: 2011-01-03
assume cs:code,ds:data
data segment
data1 db 10,11,12,13,14,15,16,17
data ends
code segment
start:
mov ax,data
mov ds,ax
xor ax,ax
mov si,offset data
mov cx,8
sum:
add dl,[bx]
……
为什么 最后 DX的值 不是006C呢 ?我是直接用-g和-r查看的
作者: rainfoxer 发布时间: 2011-01-03
引用 6 楼 znxllyuan 的回复:
assume cs:code,ds:data
data segment
data1 db 10,11,12,13,14,15,16,17
data ends
code segment
start:
mov ax,data
mov ds,ax
xor ax,ax
mov si,offset data
mov cx,8
sum:
a……
注意红色字部分
作者: masmaster 发布时间: 2011-01-03
引用 8 楼 rainfoxer 的回复:
引用 6 楼 znxllyuan 的回复:
assume cs:code,ds:data
data segment
data1 db 10,11,12,13,14,15,16,17
data ends
code segment
start:
mov ax,data
mov ds,ax
xor ax,ax
mov si,offset ……
哦, 是我看错啦
assume cs:code,ds:data
data segment
data1 db 12,23,34,56,67,89,90,80
data ends
code segment
start:
mov ax,data ;指定数据段
mov ds,ax
mov ax,0 ;AX=结果,先初始化一下
mov bx,offset data1 ;将数字首地址指向BX
mov cx,8 ;累加次数
sum:
add al,[bx] ;低位相加
adc ah,0 ;进位加法,如有进位则把CF加上
inc bx ;指向下一个数值
loop sum ;循环继续
mov ah,4ch
int 21h
code ends
end start
作者: masmaster 发布时间: 2011-01-03
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28