鱼C论坛

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

[汇编作业] 实验5(5)(6)以及相关问题

[复制链接]
发表于 2020-5-1 17:15:55 | 显示全部楼层 |阅读模式

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

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

x
5.(5)
程序:
assume cs:code

a segment
      db 1,2,3,4,5,6,7,8

a ends

b segment
     db 1,2,3,4,5,6,7,8
b ends

c segment
     db 0,0,0,0,0,0,0,0
c ends


code segment

start:mov ax,c
      mov ss,ax
          mov sp,10h
          
          mov dx,0
          mov bx,0
          mov cx,8
  s:mov ax,a
    mov ds,ax
    push ds:[bx]
        mov ax,b
    mov ds,ax
    pop dx
    add dl,ds:[bx]
    push dx
        pop ss:[bx]
    inc bx
        loop s
       
        mov ax,4c00h
        int 21h
       
       
        code ends
        end start       



程序逻辑:
题目要求将a,b相加的结果依次放入c中

将c作为栈段处理。

先将a中的【bx】处数据进栈,然后出栈放入dx中(当然,也可以省去进栈直接将其放入dx中)。

然后将ds换到b数据段。dx中的数据与ds:【bx】相加,这时候dx中存储着得到的a,b对应中数据之和,接下来就是想办法将其放入c中(栈段也可以同时被当作数据段来存储数据,但要注意数据是否会被覆盖,因为这个程序仅仅需要用到靠近栈底的一个字的空间来临时存储进出栈的数据,所以完全可以将其余未用到的存储单元当作数据段处理)

将dx入栈

出栈到ss:[bx]













(6)
程序:
assume cs:code

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

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

b ends

code segment

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

end start










想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-2-9 16:52:02 | 显示全部楼层
很不错,就是题目要求a段前 八个字,mov sp,020h,mov cx,16中的020h和16应该要调整。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-25 20:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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