汇编语言 第三版 王爽 实验5 第5、6小题程序

题目:



注意:

dw 是定义的字型数据,每个数据16个位,两个字节。

db是定义的字节型数据,每个数据8位,一个字节。

所以 需要a b 里的数据段的数据 放到al寄存器中保存。

段寄存器之间不能直接转移数据,需要通过al寄存器来中转。

mov al,es:[bx]
add ds:[bx],al

思路:

直接把a段的数据和b段的数据相加保存在a段里,在把a段的数据复制到c段。

这里有一个问题,a b段的数据不是很大 ,相加之后还是小于255,所以不会溢出。如果大于255如何解决呢?微笑


第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,a
       mov ds,ax

       mov ax,b
       mov es,ax
       mov bx,0
       
       mov cx,8
      s1:mov al,es:[bx]
       add ds:[bx],al
       inc bx
       loop s1
       
       mov ax,c
       mov es,ax
       mov bx,0
       
       mov cx,8
      s2:mov al,ds:[bx]
       mov es:[bx],al
       inc bx
       loop s2
       
       mov ax,4c00h
       int 21h
code ends
end start


结果:


第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
b ends
code segment
start:
	mov ax,a
	mov ds,ax
	mov bx,0
	
	mov ax,b
	mov ss,ax
	mov sp,10h
	
	mov cx,8
	s:push [bx]
	  add bx,2
	loop s

	mov ax,4c00h
	int 21h

code ends
end start

结果:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值