鱼C论坛

 找回密码
 立即注册
查看: 3299|回复: 1

汇编实验12

[复制链接]
发表于 2022-3-17 22:54:47 | 显示全部楼层 |阅读模式

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

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

x
转不过来呀!
assume  cs:code
code segment
                 start:mov ax,cs
                         mov ds,ax
                         mov si,offset do0
          
                         mov ax,0
                         mov es,ax
                         mov di,200h
          
                         mov cx,offset do0end - offset do0
         
                         cld
                         rep movsb
          
                        mov ax,0
                        mov es,ax
                        mov word ptr es:[0*4],200h
                        mov word ptr es:[0*4+2],0
          
                        mov ax,4c00h
                        int 21h
          
do0:                jmp short do0start
db                  'welcome to masm!'
do0start:         mov ax,cs                     
                       mov ds,ax
                          mov si,202h        ;si为什么是202h,它的段地址是哪里?如果段地址是0,那么前两步的mov ax,cs可否改为mov ax,0
               
                       mov ax,0b800h
                       mov es,ax
                       mov di,12*160+2*36
               
                       mov cx,16
                 s:   mov al,[si]       
                       mov es:[di],al
                       inc si
                       add di,2
                       loop s
               
                       mov ax,4c00h
                       int 21h
               
do0end:         nop

code ends
end start               
          
          
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-3-18 10:49:07 | 显示全部楼层
本帖最后由 jackz007 于 2022-3-18 13:02 编辑

       王爽误人子弟,不要随便往内存低地址写东西进去,因为那里属于操作系统的地盘,搞不好,会导致死机。要养成好习惯,如果需要内存,就在自己的代码中开辟,不管使用什么操作系统,无论使用什么编程语言,永远都不能侵占属于别人的存储空间,哪怕是一个字节!这是不可逾越的原则和底线。
  1. assume  cs:code , ds:data

  2. data segment para public 'DATA'
  3.      msga db 'welcome to masm!'
  4.      msgb equ $
  5.      msgc db 200h dup(00)      
  6. data ends

  7. stack segment para stack
  8.      db 800h dup(00)
  9. stack ends

  10. code segment para public 'CODE'
  11. main proc far
  12.         mov ax,DATA
  13.         mov ds,ax
  14.         mov es,ax
  15.         mov si,offset msga
  16.         mov di,offset msgc
  17.         mov cx, msgb - offset msga
  18.         push cx
  19.         cld
  20.         rep movsb
  21.         mov ax,0b800h
  22.         mov es,ax
  23.         mov di,12*160+2*36
  24.         mov si,offset msgc
  25.         pop cx
  26. do_0:   lodsb
  27.         stosb
  28.         mov al,03
  29.         stosb
  30.         loop do_0
  31.         xor ax,ax
  32.         int 16h
  33.         mov ax,04c00h
  34.         int 21h
  35. main endp
  36. code ends
  37. end main
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-7 05:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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