鱼C论坛

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

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

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

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

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

x
本帖最后由 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
上传不了图抱歉
最佳答案
2019-3-13 23:44:38
好了
        .model small
        .stack
        ;这是显示数据中出现多少个1的程序
                        .data
number          dw 0000111100001111B   ;出现问题的地方
db 1, 2, 3, 4, 5, 0ffh
db 11h, 12h, 13h, 14h, 15h, 0ffh
        .code
start:

mov        ax, @data
mov        ds, ax
mov        bx, number
          ;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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-3-13 22:49:25 | 显示全部楼层
图片上传不了啊。。。好尴尬,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-13 22:55:18 | 显示全部楼层
这不是8086汇编语言吧?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

应该是吧,因为我是看书的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

8086汇编语言中有这样的语法吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

使用道具 举报

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

这是你们的教材?还是你自学用的参考书?
如果是你自学用的参考书,建议你换用王爽老师的《汇编语言》
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

这是教材
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

那兄弟能不能帮帮忙呢,我这里用debug调试,在mov bx,number这个情况下 bx是变成038A
想知道小甲鱼最近在做啥?请访问 -> 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
试试
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

这个试过了
想知道小甲鱼最近在做啥?请访问 -> 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 结果正确
想知道小甲鱼最近在做啥?请访问 -> 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


???
截个图看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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


等级太小,不能发图
就是结果输出是错的 mov bx,number和mov bx,offset number
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

你用的什么编译器?
masm32    ???
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

我是Doxbox下使用masm
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

你编译程序的时候输入的是什么?
masm main.asm   ???
ml main.asm     ???
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-13 23:33:04 | 显示全部楼层
输入 masm回车
看看输出什么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-13 23:36:15 | 显示全部楼层
我大概明白了,我需要研究研究
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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


Version 5.00难道是版本是太旧了?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-7-5 12:01

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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