899599 发表于 2019-3-13 22:48:55

关于寄存器的赋值问题,求大神帮帮忙

本帖最后由 899599 于 2019-3-13 23:54 编辑

大神们好,本人初学汇编语言。现在遇到了一个问题
先附上代码
             .model small
      .stack
      ;这是显示数据中出现多少个1的程序
                        .data
number        dw 0000111100001111B   ;出现问题的地方
      .code
start:        mov bx,0000111100001111B;本来是想写成 mov bx,offset number
      xor dx,dx    ;清零dx
again:        cmp bx,0   ;比较是不是0
      jz done               ;是0就退出循环
      shl bx,1   ;左移1
      adc dl,0   ;加上CF
      jmp again
done:           cmp dl,10    ;比较是不是10
      jb digit       ;不是就加'0'之后显示
      push dx   ;显示'1'
      mov dl,'1'       
      mov ah,2
      int 21h
      pop dx
      sub dl,10
digit:        add dl,'0'
      mov ah,2
      int 21h
      mov ah,4ch
      int 21h
      end start

上传不了图抱歉

899599 发表于 2019-3-13 22:49:25

图片上传不了啊。。。好尴尬,{:10_266:}{:10_266:}{:10_266:}

人造人 发表于 2019-3-13 22:55:18

这不是8086汇编语言吧?

899599 发表于 2019-3-13 22:56:00

人造人 发表于 2019-3-13 22:55
这不是8086汇编语言吧?

应该是吧,因为我是看书的

人造人 发表于 2019-3-13 22:58:00

899599 发表于 2019-3-13 22:56
应该是吧,因为我是看书的

      .model small
      .stack

8086汇编语言中有这样的语法吗

899599 发表于 2019-3-13 23:01:27

人造人 发表于 2019-3-13 22:58
8086汇编语言中有这样的语法吗

我这本是16/32位微机原理、汇编语言及接口技术教程
在helloworld例子里面是有的
而且删了就不能masm了
这本书说的就是8086

人造人 发表于 2019-3-13 23:08:06

899599 发表于 2019-3-13 23:01
我这本是16/32位微机原理、汇编语言及接口技术教程
在helloworld例子里面是有的
而且删了就不能masm了
...

这是你们的教材?还是你自学用的参考书?
如果是你自学用的参考书,建议你换用王爽老师的《汇编语言》

899599 发表于 2019-3-13 23:09:03

人造人 发表于 2019-3-13 23:08
这是你们的教材?还是你自学用的参考书?
如果是你自学用的参考书,建议你换用王爽老师的《汇编语言》

这是教材

899599 发表于 2019-3-13 23:12:47

人造人 发表于 2019-3-13 23:08
这是你们的教材?还是你自学用的参考书?
如果是你自学用的参考书,建议你换用王爽老师的《汇编语言》

那兄弟能不能帮帮忙呢,我这里用debug调试,在mov bx,number这个情况下 bx是变成038A

人造人 发表于 2019-3-13 23:13:30

899599 发表于 2019-3-13 23:12
那兄弟能不能帮帮忙呢,我这里用debug调试,在mov bx,number这个情况下 bx是变成038A

mov bx,number
改成
mov bx, offset number
试试

899599 发表于 2019-3-13 23:17:04

人造人 发表于 2019-3-13 23:13
mov bx,number
改成
mov bx, offset number


这个试过了

899599 发表于 2019-3-13 23:19:25

人造人 发表于 2019-3-13 23:13
mov bx,number
改成
mov bx, offset number


mov bx,number结果是2
mov bx,offset number 结果是0
mov bx,0000111100001111B 结果正确

人造人 发表于 2019-3-13 23:22:54

899599 发表于 2019-3-13 23:19
mov bx,number结果是2
mov bx,offset number 结果是0
mov bx,0000111100001111B 结果正确

mov bx,number结果是2
mov bx,offset number 结果是0

???
截个图看看

899599 发表于 2019-3-13 23:24:13

本帖最后由 899599 于 2019-3-13 23:25 编辑

人造人 发表于 2019-3-13 23:22
???
截个图看看

等级太小,不能发图{:10_266:}
就是结果输出是错的 mov bx,number和mov bx,offset number

人造人 发表于 2019-3-13 23:26:48

899599 发表于 2019-3-13 23:24
等级太小,不能发图
就是结果输出是错的 mov bx,number和mov bx,offset number

你用的什么编译器?
masm32    ???

899599 发表于 2019-3-13 23:28:48

人造人 发表于 2019-3-13 23:26
你用的什么编译器?
masm32    ???

我是Doxbox下使用masm

人造人 发表于 2019-3-13 23:32:34

899599 发表于 2019-3-13 23:28
我是Doxbox下使用masm

你编译程序的时候输入的是什么?
masm main.asm   ???
ml main.asm   ???

人造人 发表于 2019-3-13 23:33:04

输入 masm回车
看看输出什么

人造人 发表于 2019-3-13 23:36:15

我大概明白了,我需要研究研究

899599 发表于 2019-3-13 23:38:34

人造人 发表于 2019-3-13 23:33
输入 masm回车
看看输出什么

Version 5.00难道是版本是太旧了?
页: [1] 2
查看完整版本: 关于寄存器的赋值问题,求大神帮帮忙