ZCYR 发表于 2020-2-6 20:47:57

求助dalao 关于汇编第六章内容

file:///C:/Users/26816/Desktop/F79G%25%5B15G24JP%60~3%254JLDTI.png
这个程序是什么情况 想修改栈的偏移地址 一改就结束程序了 用G命令跳到MOV SP,0007后面一条指令他显示该程序正常终止{:10_269:}

ZCYR 发表于 2020-2-6 20:49:51

不能上传图片也太恐怖了把

ZCYR 发表于 2020-2-6 20:50:55

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
dad segment
db 0,0,0,0,0,0,0,0
dad ends

CODE segment

start:
MOV AX,DAD
MOV SS,AX
MOV AX,a
MOV DS,AX
MOV BX,7
MOV SP,7

MOV CX,8
S: PUSH DS:
SUB BX,1
LOOP S
mov aX,4c00h
int 21h
code ends
end start

ZCYR 发表于 2020-2-6 21:28:10

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
dad segment
db 0,0,0,0,0,0,0,0
dad ends

CODE segment

start:
MOV AX,a
MOV DS,AX
MOV BX,0
MOV CX,8
MOV DX,DAD
mov es,DX
S:
MOV AL,DS:
MOV es:,AL
ADD BX,1
LOOP S

MOV BX,0
MOV CX,8
MOV AX,DAD
mov es,AX
MOV AX,B
mov DS,AX
P: MOV AL,es:
ADD AL,dS:
MOV es:,AL
INC BX
LOOP P
mov aX,4c00h
int 21h
code ends
end start
原本想试试栈的 最后用这才实现了

yjcoke 发表于 2020-2-10 16:58:44

我觉得你发的这不是第六章的内容吧..
你发的这个应该是A的数字加上B的数字,然后存入DAD..这个不是第六章.
另外如果要用到栈的话,你应该是将二个单元的数字加起来,然后高低位都放在一个寄存器中,然后push 寄存器.
我是个人这么认为的.

yjcoke 发表于 2020-2-10 17:10:08

本帖最后由 yjcoke 于 2020-2-10 17:13 编辑

算了,我写了个用栈的.

Fimbulex 发表于 2020-2-10 17:25:03

yjcoke 发表于 2020-2-10 17:10
算了,我写了个用栈的.

你这个图片是怎么上传的

405794672 发表于 2020-2-24 19:51:07

你这些看得眼花。我只看了第一个代码。并没有你说的修改栈的偏移地址,一改就结束了。你后面的代码不还是打出来了?不过你这个代码,我想说的是,栈是两字节一起存的。你push啥啊?还push8次?4次就够了。还有,你的sp应该设为8。你有八个字符。设7就溢出了。到顶会继续往上压。把你上面定义的段的内存全压没了
页: [1]
查看完整版本: 求助dalao 关于汇编第六章内容