大神帮忙看看,x86汇编语言调试的结果和运行的结果不一样

魔天皇 2020-04-21 10:46:34
assume cs:codesg;线性同余算法 随机生成 3个元素

codesg segment

output: ;将一个数按10进制输出
mov bx,10
mov cx,0
disp1:
mov dx,0
div bx
push dx
inc cx
or ax,ax
jne disp1
disp2:
mov ah,2
pop dx
add dl,30h
int 21h
loop disp2
jmp goon

start :
mov ax,data
mov ds,ax
mov ax,stack
mov ss,ax

mov al,1
mov bl,11
mov bh,101
mov cx,3;
mov di,0

s: mul bl
add ax,7
div bh
mov al,ah
mov dl,al
push ax
mov ax,dx
push bx
push cx
push dx
jmp output
goon:
mov dl,' '
mov ah,2
int 21h
pop dx
pop cx
pop bx
pop ax
mov ah,0
loop s

mov ax,4c00h
int 21h

codesg ends
end start
...全文
143 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
魔天皇 2020-04-23
  • 打赏
  • 举报
回复
引用 4 楼 sbc0519 的回复:
你告诉我这是x86?这明明是16位汇编
我表达不准确
魔天皇 2020-04-23
  • 打赏
  • 举报
回复
引用 4 楼 sbc0519 的回复:
你告诉我这是x86?这明明是16位汇编
我表达不准确
  • 打赏
  • 举报
回复
x86是泛指,广义上是指一切8086/8088兼容处理器,包括16/32/64位处理器,狭义上只包括16/32位,不包括64位,64位使用x64、x86-64、intel64、AMD64之类的术语
魔天皇 2020-04-22
  • 打赏
  • 举报
回复
引用 1 楼 zara 的回复:
output: 后面的 div bx 是 dx:ax/bx 即使有了 dx 但没有预先把它置 0 ,dos 的加载程序好像是不管 dx 的,而调试软件往往会把它置 0,所以两边会有不一样的结果。自己主动置 dx 为 0 就是了。
谢谢大佬,太强了,我在改改
zara 2020-04-22
  • 打赏
  • 举报
回复
另外,你这程序结构流程上好像有些乱啊
zara 2020-04-22
  • 打赏
  • 举报
回复
output: 后面的 div bx 是 dx:ax/bx 即使有了 dx 但没有预先把它置 0 ,dos 的加载程序好像是不管 dx 的,而调试软件往往会把它置 0,所以两边会有不一样的结果。自己主动置 dx 为 0 就是了。
sbc0519 2020-04-22
  • 打赏
  • 举报
回复
你告诉我这是x86?这明明是16位汇编

21,458

社区成员

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

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