wyuri 发表于 2017-1-18 12:21:18

人造人 发表于 2017-1-17 14:47
问题1:
因为在C中字符串以0结尾,汇编中也默认了



新年快乐^_^
还有问题要问您^_^
第十七章

wyuri 发表于 2017-1-18 12:41:38

本帖最后由 wyuri 于 2017-1-18 12:47 编辑

您看下面

wyuri 发表于 2017-1-18 12:47:03

人造人 发表于 2017-1-17 14:47
问题1:
因为在C中字符串以0结尾,汇编中也默认了



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

人造人 发表于 2017-1-18 13:12:22

wyuri 发表于 2017-1-18 12:21
新年快乐^_^
还有问题要问您^_^
第十七章

这个程序没有用到扫描码,覆盖就覆盖了,没事

人造人 发表于 2017-1-18 13:19:41

wyuri 发表于 2017-1-17 14:05
你好,新年快了
还有问题请教您
王爽汇编第十六章

贴一下这个程序,我帮你调试,贴一个图片,我还得抄代码,直接复制过来就好了^_^

人造人 发表于 2017-1-18 13:20:41

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

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

wyuri 发表于 2017-3-17 14:06:20

人造人 发表于 2017-1-18 13:20
我忘了你不懂C语言,抱歉

你好,好久不见,拜个晚年。嘿嘿我又来给你添麻烦了

wyuri 发表于 2017-3-17 14:07:41

人造人 发表于 2017-1-18 13:20
我忘了你不懂C语言,抱歉

由于过年要有自己的事处理,所以一直没有看书,现在打算再从温习一遍。所以还要继续麻烦你,辛苦了

人造人 发表于 2017-3-17 16:31:18

wyuri 发表于 2017-3-17 14:06
你好,好久不见,拜个晚年。嘿嘿我又来给你添麻烦了

从理论上讲,的确可行,
但从现实来说,要如何把程序直接写到0000:0200?
^_^

wyuri 发表于 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里?
我有点小糊涂,不知道安没安进去

wyuri 发表于 2017-3-20 18:42:28

本帖最后由 wyuri 于 2017-3-20 19:01 编辑

wyuri 发表于 2017-3-20 18:27
在debug里
r cs
cs


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,
         mov es:,ax
         add bx,2
         loop s
         mov ax,4c00h
         int 21h
code ends
end start

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

         
         

人造人 发表于 2017-3-20 22:15:15

本帖最后由 人造人 于 2017-3-20 22:18 编辑

wyuri 发表于 2017-3-20 18:27
在debug里
r cs
cs


那现在又需要引入另一个问题了,“直接”是什么意思?
就算是在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有好多的限制,你如果有兴趣,可以多写一些这样的程序,你就会发现这样的限制


说了半天还是没有说明白“直接”是什么意思^_^

wyuri 发表于 2017-3-22 15:45:48

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



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

人造人 发表于 2017-3-22 16:36:06

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

玩8086汇编,最后在16位实模式下玩
装一个虚拟机,在16位实模式下玩
^_^

wyuri 发表于 2017-3-22 16:40:48

人造人 发表于 2017-3-22 16:36
玩8086汇编,最后在16位实模式下玩
装一个虚拟机,在16位实模式下玩
^_^

哈哈哈,我知道了,用的是debug谢谢了, 辛苦了   

wyuri 发表于 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,
      mov es:,al
      mov ah,ds:
      mov es:1,ah
      inc di
      add si,2
      loop s1
      add bx,160
      inc bp
      pop cx
      loop s
code ends
end start   

人造人 发表于 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,
      mov es:,al
      mov ah,ds:
      mov es:1,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   


^_^

wyuri 发表于 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,
      mov es:720h,al
      mov ah,ds:
      mov es:721h,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

安卓逆向 发表于 2017-3-23 23:06:34

汇编感觉挺重要的

wyuri 发表于 2017-3-24 00:15:54

人造人 发表于 2017-3-22 19:20
assume cs:code,ds:date,ss:stack
date segment
   db 'welcome to masm!'


不用了,谢了,知道怎么弄了显示了
页: 1 2 3 4 5 6 [7] 8 9 10 11
查看完整版本: 王爽汇编问题