汇编网首页登录博客注册
zhi的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
学习动态
最新评论
  • [游客] 1 10/24 11:50
  • [游客] 9 10/24 11:49
最新留言
好友圈
文章收藏
友情链接

[2020-08-27 16:12] 实验5 编写、调试具有多个段的程序

(1)
①0123h,0456h,0789h,0abch,0fedh,0cbah,0987h,0000h
②076ch,076bh,076ah
③x-2,x-1
(2)
①0123h,0456h,0000h,0000h,0000h,0000h
②076ch,076bh,076ah
③x-2,x-1
④N个字节(如:code段)
(3)
①0123h,0456h,0000h,0000h,0000h,0000h
②076ah,076eh,076dh
③x+3,x+4
(4)
(3)题程序可以正确执行。
查资料得知:
将最后一条伪指令“end start”改为“end”,即没有指明程序入口,此时程序就会从加载进内存的第一个单元起开始执行。在(1)(2)题中,都是数据先加载进内存,不能保证最终被正确执行;而(3)题则是代码段先被加载进内存,因而可以被正确执行。
(5)
mov ax, c
mov ss, ax

mov ax, a
mov ds, ax

mov ax, b
mov es, ax

mov ax, 0
mov bx, 0
mov cx, 8 
s:mov al, ds:[bx]
add al, es:[bx]
mov ss:[bx], al
inc bx
loop s

mov ax, 4c00h
int 21h
一开始不敢使用ss存储c段的段地址,看了论坛讨论后茅塞顿开,是自己太死板了
(6)
assume cs: code

a segment
        dw 1, 2, 3, 4, 5, 6, 7, 8, 9, 0ah, Obh, 0ch, 0dh, 0eh, 0fh, Offh
a ends

b segment
        dw 0,0,0,0,0,0,0,0
b ends

code seament
        start:mov ax, a
        mov ds, ax
        mov ax, b
        mov ss, ax
        mov sp, 16
        
        mov cx, 8
        mov bx, 0
        s:push [bx]
        add bx, 2
        loop s
        
        mov ax, 4c00h
        int 21h
code ends

end start
评论次数(0)  |  浏览次数(501)  |  类型(汇编作业) |  收藏此文  | 
 
 请输入验证码  (提示:点击验证码输入框,以获取验证码