鱼C论坛

 找回密码
 立即注册
查看: 3316|回复: 2

[汇编作业] 实验四---------欢迎大家共同讨论

[复制链接]
发表于 2017-5-21 23:13:57 | 显示全部楼层 |阅读模式

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

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

x
4.1-4.2
  1. assume cs:code
  2. code segment

  3. start:        mov ax, 20H                ;(ax) = 20H
  4.                 mov ds, ax                 ;设置段地址 (ds) = (ax)
  5.                 mov bx, 0                ;(bx) = 0 清空bx寄存器里面的值,用于存储偏移地址及变量 配合段地址ds
  6.                 mov cx, 64                ;(cx) = 64 用于存储循环变量 64次 配合loop使用
  7.         s:        mov ds:[bx], bl        ;开始循环,用Bl低8位存放数据在ds:[bx]内存单元中 ((ds)*16+(bx)) = (bl)
  8.                 inc bx                        ;(bx) = (bx)
  9.                 loop s                        ;跳转指令
  10.                 mov ax, 4c00H       
  11.                 int 21H
  12. code ends
  13. end start
复制代码

4.3
  1. assume cs:code
  2. code segment

  3. start:                mov ax,0BA6H                ;3  字节    这个地址每台计算机都不一样
  4.                 mov ds,ax                ;2  字节
  5.                 mov ax,0020h                ;3  字节
  6.                 mov es,ax                ;2  字节
  7.                 mov bx,0                        ;3  字节
  8.                 mov cx,24                ;3  字节
  9.         s:        mov al,[bx]                ;2+1 字节
  10.                 mov es:[bx],al                ;2  字节
  11.                 inc bx                        ;1  字节
  12.                 loop s                        ;2  字节
  13.                 mov ax,4c00H       
  14.                 int 21H
  15. code ends
  16. end start
复制代码


复制的是 mov ax,0BA6H 至 loop s 的代码段,0BA6:0H ~ 0BA6:18H 地址
赋值的是二进制数据(这里也不太肯定),有24个字节,先把程序写好编译好,debug 程序,利用 -u 0BA6H:0查看汇编代码有多少个字节,然后自己算一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-2-12 22:05:46 | 显示全部楼层
有一个疑问 0:200~0:23F是怎么变成20:0~20:3F  0:200 这不是0段吗 20:0 不是20段吗怎么转换的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-15 17:11:42 | 显示全部楼层
gang19840815 发表于 2020-2-12 22:05
有一个疑问 0:200~0:23F是怎么变成20:0~20:3F  0:200 这不是0段吗 20:0 不是20段吗怎么转换的

物理地址=段地址*16(相当于左移一位/后面加个0)+偏移地址
0:200=0*16+200=200
20:0=20(16进制)*16+0=200
所以这两个是一样的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-22 21:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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