assembly - 为什么我会得到另一个结果?
问题描述
我试图为学校解决这个项目,当我使用编译器时,最终结果是一些表情符号而不是数字的总和
我重写了整个代码,但我得到了相同的结果
.model small
.stack 100h
.data
nstr db 6 dup(' ')
idv dw 10
a dw 2
b dw 9
c dw 6
x dw ? ;x=a+b+c
d dw 7
e dw 5
y dw ? ;y=d+e
z dw ? ;z=x+y
.code
.start
mov ds, ax
; x = a+b+c
mov ax, a
add ax, b
add ax, c
mov x, ax
; y = d+e
mov ax, d
add ax, e
mov y, ax
; z = x+y
mov ax, x
add ax, y
mov z , ax
mov si,5
mov nstr[si], '$'
dec si
mov ax, z
mov dx,0
loop1: ;
div idv
;
add dl, '0'
mov nstr[si],dl
dec si
mov dx,0
cmp ax,0
jne loop1
listn:
mov ah, 09h
mov dx, offset nstr ;
int 21h
stopprg:
mov ah, 4ch
int 21h
end
解决方案
该.start
指令将生成代码,这些代码将为您选择的模型(在本例中small
)初始化段。您用AX中的任何内容覆盖DS。这会将数据段指向内存中不包含您的数据的位置(如, , ...等),从而产生不正确的结果。要修复只需删除此行:mov ds, ax
nstr
idv
a
z
mov ds, ax
推荐阅读
- macos - 在 Mac OS 上使用 'dlopen' 函数不导出 DYLD_LIBRARY_PATH 变量时无法打开动态库文件 (.dylib)
- android - GridLayout 列在较小的屏幕设备上消失
- javafx - 在 JavaFX 中,如何在 TabPane 内的 TableView 中添加 TextField?
- reactjs - 始终在根节点上渲染 React 组件
- reactjs - 使用反应状态为单个按钮创建 onClick 效果的问题
- asp.net-mvc - 如何根据url参数渲染样式?
- html - 这个 HTML 表格有什么问题?
- mongodb - MongoDB 状态集更新
- git - 如何在 Visual Studio 解决方案中将特定文件添加到 .gitignore?
- apache-spark - 在 spark 中验证 csv 数据的数据类型的正确方法是什么?