鱼C论坛

 找回密码
 立即注册
查看: 5087|回复: 26

[已解决]关于寄存器的赋值问题,求大神帮帮忙

[复制链接]
发表于 2019-3-13 22:48:55 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

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

上传不了图抱歉
最佳答案
2019-3-13 23:44:38
好了

  1.         .model small
  2.         .stack
  3.         ;这是显示数据中出现多少个1的程序
  4.                         .data
  5. number          dw 0000111100001111B   ;出现问题的地方
  6. db 1, 2, 3, 4, 5, 0ffh
  7. db 11h, 12h, 13h, 14h, 15h, 0ffh
  8.         .code
  9. start:

  10. mov        ax, @data
  11. mov        ds, ax
  12. mov        bx, number
  13.           ;mov bx,0000111100001111B  ;本来是想写成 mov bx,offset number
  14.         xor dx,dx    ;清零dx
  15. again:          cmp bx,0     ;比较是不是0
  16.         jz done                 ;是0就退出循环
  17.         shl bx,1     ;左移1
  18.         adc dl,0     ;加上CF
  19.         jmp again
  20. done:           cmp dl,10    ;比较是不是10
  21.         jb digit         ;不是就加'0'之后显示
  22.         push dx   ;显示'1'
  23.         mov dl,'1'        
  24.         mov ah,2
  25.         int 21h
  26.         pop dx
  27.         sub dl,10
  28. digit:          add dl,'0'
  29.         mov ah,2
  30.         int 21h
  31.         mov ah,4ch
  32.         int 21h
  33.         end start
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-3-13 22:49:25 | 显示全部楼层
图片上传不了啊。。。好尴尬,
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-13 22:55:18 | 显示全部楼层
这不是8086汇编语言吧?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-3-13 22:56:00 | 显示全部楼层
人造人 发表于 2019-3-13 22:55
这不是8086汇编语言吧?

应该是吧,因为我是看书的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-13 22:58:00 | 显示全部楼层
899599 发表于 2019-3-13 22:56
应该是吧,因为我是看书的
  1.         .model small
  2.         .stack
复制代码


8086汇编语言中有这样的语法吗
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-3-13 23:01:27 | 显示全部楼层
人造人 发表于 2019-3-13 22:58
8086汇编语言中有这样的语法吗

我这本是16/32位微机原理、汇编语言及接口技术教程
在helloworld例子里面是有的
而且删了就不能masm了
这本书说的就是8086
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

这是你们的教材?还是你自学用的参考书?
如果是你自学用的参考书,建议你换用王爽老师的《汇编语言》
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

这是教材
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

那兄弟能不能帮帮忙呢,我这里用debug调试,在mov bx,number这个情况下 bx是变成038A
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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
试试
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-3-13 23:17:04 | 显示全部楼层
人造人 发表于 2019-3-13 23:13
mov bx,number
改成
mov bx, offset number

这个试过了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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 结果正确
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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


???
截个图看看
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-3-13 23:24:13 | 显示全部楼层
本帖最后由 899599 于 2019-3-13 23:25 编辑


等级太小,不能发图
就是结果输出是错的 mov bx,number和mov bx,offset number
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-13 23:26:48 | 显示全部楼层
899599 发表于 2019-3-13 23:24
等级太小,不能发图
就是结果输出是错的 mov bx,number和mov bx,offset number

你用的什么编译器?
masm32    ???
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-3-13 23:28:48 | 显示全部楼层
人造人 发表于 2019-3-13 23:26
你用的什么编译器?
masm32    ???

我是Doxbox下使用masm
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-13 23:32:34 | 显示全部楼层
899599 发表于 2019-3-13 23:28
我是Doxbox下使用masm

你编译程序的时候输入的是什么?
masm main.asm   ???
ml main.asm     ???
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-13 23:33:04 | 显示全部楼层
输入 masm回车
看看输出什么
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-13 23:36:15 | 显示全部楼层
我大概明白了,我需要研究研究
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-3-13 23:38:34 | 显示全部楼层
人造人 发表于 2019-3-13 23:33
输入 masm回车
看看输出什么


Version 5.00难道是版本是太旧了?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-9 23:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表