LAB4

(1)

编程, 向内存0:200 ~ 0:23F 依次传入数据 0 ~63

  1. assume cs:code
  2. code segment
  3. mov bx,200
  4. mov ax,0
  5. mov cx,64
  6. s:mov 0:[bx],ax
  7. inc bx
  8. inc ax
  9. loop s
  10. mov ax,4c00h
  11. int 21h
  12. code ends
  13. end

image.png

(3)

下面程序的功能是将”mov ax,4c00h” 之前 的指令复制到内存 0:200 处,补全程序. 上机调试

  1. assume cs:code
  2. code segment
  3. mov ax,___ (cs)
  4. mov ds,ax
  5. mov es,ax
  6. mov bx,0
  7. mov cx,___ (12h)
  8. s:mov al,[bx]
  9. mov es:[bx],al
  10. inc bx
  11. loop s
  12. mov ax,4c00h
  13. int 21h
  14. code ends
  15. end

分析:

  • 复制的肯定是二进制代码嘛, 哪里的呢? 这串代码本身白, 这串代码本身在哪? CS段yes!
  • 所以就是把CS:[bx]里的内容复制, bx截止于mov ax,4c00h前一行

image.png
给cx填了20 用debug测试一下 有多大
哈哈, 有12h个存储单元
这个题主要是复习两个点:

  • 代码也是二进制数据, 只不过CPU以什么样的视角看他
  • 一段程序加载进去, 加载到了 DS为段地址的那块内存, 而程序在dx+10h的CS段地址