鱼C论坛

 找回密码
 立即注册
楼主: wyuri

王爽汇编问题

[复制链接]
 楼主| 发表于 2017-1-18 12:21:18 | 显示全部楼层
人造人 发表于 2017-1-17 14:47
问题1:
因为在C中字符串以0结尾,汇编中也默认了

新年快乐^_^
还有问题要问您^_^
第十七章
问题13.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-1-18 12:41:38 | 显示全部楼层
本帖最后由 wyuri 于 2017-1-18 12:47 编辑

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

使用道具 举报

 楼主| 发表于 2017-1-18 12:47:03 | 显示全部楼层
人造人 发表于 2017-1-17 14:47
问题1:
因为在C中字符串以0结尾,汇编中也默认了

         您没理解我的意思,首先我最后一个放零了ag180 db '0',0  。如果他是输入一个度数显示一个sin值,那么add si,2是多余的,(因为如果是输入一次显示一个,那直接显示在 es:[si] 里就得了)。如果是分别依次显示在显示区里那么add si,2不多余,但是ag0  ad30 ag60 ag90 ag120 ag150 后分别放零是多余的,(因为显示一个度数就会退出),并且把mov ah,0改为mov ax,0,因为如果不改的话,al的值不确保是0。如果是输入一个度数显示一个sin值可以用mov ah,0。这是我的理解,其实有好多问题,可能我说的不够严谨,您都没能理解我的意思。
         还有我没学过有关计算机的任何书,王爽汇编是我摸的第一本有关计算机的书,什么C语言我还没来得及学呢。所以您用C语言给我讲,我就更懵圈了,^_^碰上我这样的学生真是难为您了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-1-18 13:12:22 | 显示全部楼层
wyuri 发表于 2017-1-18 12:21
新年快乐^_^
还有问题要问您^_^
第十七章

这个程序没有用到扫描码,覆盖就覆盖了,没事
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-1-18 13:19:41 | 显示全部楼层
wyuri 发表于 2017-1-17 14:05
你好,新年快了
还有问题请教您
王爽汇编第十六章

贴一下这个程序,我帮你调试,贴一个图片,我还得抄代码,直接复制过来就好了^_^
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-1-18 13:20:41 | 显示全部楼层
wyuri 发表于 2017-1-18 12:47
您没理解我的意思,首先我最后一个放零了ag180 db '0',0  。如果他是输入一个度数显示一个sin值 ...

我忘了你不懂C语言,抱歉

评分

参与人数 1荣誉 +3 鱼币 +3 贡献 +2 收起 理由
拈花小仙 + 3 + 3 + 2 热心回复`

查看全部评分

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

使用道具 举报

 楼主| 发表于 2017-3-17 14:06:20 | 显示全部楼层
人造人 发表于 2017-1-18 13:20
我忘了你不懂C语言,抱歉

你好,好久不见,拜个晚年。嘿嘿我又来给你添麻烦了
201701问题.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-3-17 14:07:41 | 显示全部楼层
人造人 发表于 2017-1-18 13:20
我忘了你不懂C语言,抱歉

由于过年要有自己的事处理,所以一直没有看书,现在打算再从温习一遍。所以还要继续麻烦你,辛苦了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-3-17 16:31:18 | 显示全部楼层
wyuri 发表于 2017-3-17 14:06
你好,好久不见,拜个晚年。嘿嘿我又来给你添麻烦了

从理论上讲,的确可行,
但从现实来说,要如何把程序直接写到0000:0200  ?
^_^
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-3-20 18:27:48 | 显示全部楼层
本帖最后由 wyuri 于 2017-3-20 19:32 编辑
人造人 发表于 2017-3-17 16:31
从理论上讲,的确可行,
但从现实来说,要如何把程序直接写到0000:0200  ?
^_^


在debug里
r cs
cs
:20
r ip
ip
:0
a
0020:0000 mov~~程序



a 0020:0000
程序

可能我还是没学透,这样可以么
实际上这样程序有没有安装在0000:0200里?
我有点小糊涂,不知道安没安进去
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-3-20 18:42:28 | 显示全部楼层
本帖最后由 wyuri 于 2017-3-20 19:01 编辑


assume cs:code
code segment
start: mov ax,cs
         mov ds,ax
         mov ax,0020h
         mov es,ax
         mov bx,0
     s1: 程序
     s2:  mov cx,(offset s2-offset s1)/2
     s:  mov ax,[bx]
         mov es:[bx],ax
         add bx,2
         loop s
         mov ax,4c00h
         int 21h
code ends
end start

这个算不算,现在越来越觉得迷糊,按理说越证明应该越清晰,我现在越证明自己的观点,越糊涂。

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

使用道具 举报

发表于 2017-3-20 22:15:15 | 显示全部楼层
本帖最后由 人造人 于 2017-3-20 22:18 编辑


那现在又需要引入另一个问题了,“直接”是什么意思?
就算是在debug中
r cs
cs
:20
r ip
ip
:0
a
0020:0000 mov~~程序

或

a 0020:0000
程序


这样也“不是直接”写入0000:0200(在没有搞清楚“直接”是什么意思之前,说“不是直接”没有意义,但是在这里我想不出更好的词代替^_^)
debug需要将你写的文本字符串转换为机器指令,再把转换后的机器指令写入0000:0200
这样还算是“直接”吗?
那“直接”是什么意思?

再说了,你自己可以这样试试,debug有好多的不方便。


“直接”用debug写,和通过另一个软件来“安装”,似乎都是同一个意思

如果你认为用debug这样写就是“直接”,那这样的确可以,但是却是不可行的做法,因为debug有好多的限制,你如果有兴趣,可以多写一些这样的程序,你就会发现这样的限制


说了半天还是没有说明白“直接”是什么意思^_^
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2017-3-22 15:45:48 | 显示全部楼层
人造人 发表于 2017-3-20 22:15
那现在又需要引入另一个问题了,“直接”是什么意思?
就算是在debug中

嗯,谢谢,真想问点有质量的问题,不过我太小白了,让你总回答我幼稚的问题来降低你智商。
对了,我还有个非常基础的问题,我用64位的电脑,运行不了程序,用32位没有报错但是不知道有没有运行,反正没有看到结果。我做的是王爽汇编,第九章最后面的实验题,用的小甲鱼的程序运行的。
问题14.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-3-22 16:36:06 | 显示全部楼层
wyuri 发表于 2017-3-22 15:45
嗯,谢谢,真想问点有质量的问题,不过我太小白了,让你总回答我幼稚的问题来降低你智商。
对了,我还有 ...

玩8086汇编,最后在16位实模式下玩
装一个虚拟机,在16位实模式下玩
^_^
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-3-22 16:40:48 | 显示全部楼层
人造人 发表于 2017-3-22 16:36
玩8086汇编,最后在16位实模式下玩
装一个虚拟机,在16位实模式下玩
^_^

哈哈哈,我知道了,用的是debug  谢谢了, 辛苦了   
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-3-22 16:55:19 | 显示全部楼层
人造人 发表于 2017-3-22 16:36
玩8086汇编,最后在16位实模式下玩
装一个虚拟机,在16位实模式下玩
^_^

不行啊,我的弄不出来  我自己写了个程序,我不知道能不能显示出来,自己写的东西检查不出来错误,我能不能麻烦您帮我测试一下
第九章实验题
assume cs:code,ds:date,ss:stack
date segment
   db 'welcome to masm!'
   db 2,24h,71h
date ends
stack segment
   dw 8 dup (0)
stack ends
code segment
start:mov ax,stack
      mov ss,ax
      mov sp,16
      mov ax,date
      mov ds,ax
      mov ax,0b800h
      mov es,ax
      mov bx,0
      mov bp,16
      
      mov cx,3
   s :push cx
      mov si,720h
      mov di,0
      mov cx,16
   s1:mov al,[di]
      mov es:[si][bx],al
      mov ah,ds:[bp]
      mov es:1[si][bx],ah
      inc di
      add si,2
      loop s1
      add bx,160
      inc bp
      pop cx
      loop s
code ends
end start   
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-3-22 19:20:03 | 显示全部楼层
wyuri 发表于 2017-3-22 16:55
不行啊,我的弄不出来  我自己写了个程序,我不知道能不能显示出来,自己写的东西检查不出来错误,我能不 ...

assume cs:code,ds:date,ss:stack
date segment
   db 'welcome to masm!'
   db 2,24h,71h
date ends
stack segment
   dw 8 dup (0)
stack ends
code segment
start:mov ax,stack
      mov ss,ax
      mov sp,16
      mov ax,date
      mov ds,ax
      mov ax,0b800h
      mov es,ax
      mov bx,0
      mov bp,16
      
      mov cx,3
   s :
   push cx
      
      mov si,720h
      mov di,0
      mov cx,16
      
   s1:
   mov al,[di]
      mov es:[si][bx],al
      mov ah,ds:[bp]
      mov es:1[si][bx],ah
      inc di
      add si,2
      
      loop s1
     
     add bx,160
      inc bp
   
    pop cx
      loop s
      
     mov ax, 4c00h
      int 21h

      
code ends
end start   


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

使用道具 举报

 楼主| 发表于 2017-3-23 22:42:24 | 显示全部楼层
人造人 发表于 2017-3-22 19:20
assume cs:code,ds:date,ss:stack
date segment
   db 'welcome to masm!'

^_^谢谢呵呵呵,最主要的
您能帮我看看这个么
我应该用什么怎么操作才能看到结果
做了一下改动,不知道寄存器有没有冲突,所以让您帮我操作一下看能不能显示
assume cs:code,ds:date,ss:stack
date segment
   db 'welcome to masm!'
   db 2,24h,71h
date ends
stack segment
   dw 8 dup (0)
stack ends
code segment
start:mov ax,stack
      mov ss,ax
      mov sp,16
      mov ax,date
      mov ds,ax
      mov ax,0b800h
      mov es,ax
      mov bx,0
      mov bp,16
      
      mov cx,3
   s :push cx
      
      mov si,bx
      
      mov di,0
      mov cx,16
   s1:mov al,[di]
      mov es:720h[si],al
      mov ah,ds:[bp]
      mov es:721h[si],ah
      inc di
      add si,2
      loop s1
      add bx,160
      inc bp
      
      pop cx
      loop s
      mov ax,4c00h
      int 21h
   
code ends
end start
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-3-23 23:06:34 | 显示全部楼层
汇编感觉挺重要的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-3-24 00:15:54 | 显示全部楼层
人造人 发表于 2017-3-22 19:20
assume cs:code,ds:date,ss:stack
date segment
   db 'welcome to masm!'

不用了,谢了,  知道怎么弄了  显示了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-10-6 13:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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