与预想不一致的结果!

suds 2006-07-03 02:28:55
初学asm.使用RadAsm.
很多地方不明白!
assume cs:cseg, ds:dseg, ss:sseg
; code
cseg segment
start:
MOV AH,X
MOV BH,Y
ADD AH,BH
mov ax, 4C00h
int 21h
cseg ends
; data
dseg segment byte
X DB 10H
Y DB 20H
dseg ends
; stack
sseg segment stack
db 100h dup(?)
sseg ends
end start

编译链接以后用codeview调试的时候发现
执行完语mov ah,x以后ah的值为3。
而这个时候的汇编代码是
mov ah,byte ptr [000F]
这个000F就等于10,那么这就是说mov ah,x是将x的值所指的地址的值赋给ah.
这个好像和我看书的结果不一致!
还请哪位好心解答一下!
本人深知问题较弱智!请勿见笑!
谢谢了!
BTW:(用的是RadAsm生成的DosApp的template)
...全文
135 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
suds 2006-07-03
  • 打赏
  • 举报
回复
It works!
Thank you very much!
我本来以为
assume语句会直接把各个段的地址自动的和段寄存器关联起来!

大熊猫侯佩 2006-07-03
  • 打赏
  • 举报
回复
full code :

data segment
x db 10
y db 20
data ends

code segment
assume cs:code,ds:data
start:
push ds
xor ax,ax
push ax

mov ax,data
mov ds,ax

mov ah,x
mov al,y

retf
code ends
end start
大熊猫侯佩 2006-07-03
  • 打赏
  • 举报
回复
你没有将 ds 段寄存器赋正确的值吧?do like this :

mov ax,dseg
mov ds,ax

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧