下面的程序段将数据段中首地址为ADDR、长度为N的一组数据加1,并送回原处。请在_______处填上适当的内容。
MOV AX, DATA
MOV DS, ____________
MOV ES, _____________
MOV SI, OFFSET ADDR
MOV ______________, SI
CLD
MOV CX, N
NEXT: ________________
INC AL
STOSB
LOOP NEXT
全还给老师了。希望给出每步的解释说明。越详细越好。谢谢。。。。。(注意是汇编语言)
汇编语言 程序段将数据段中首地址为ADDR
答案:2 悬赏:60 手机版
解决时间 2021-02-05 10:07
- 提问者网友:温旧梦泪无声
- 2021-02-04 23:54
最佳答案
- 五星知识达人网友:封刀令
- 2021-02-05 00:01
ax ax di lodsb你试试看对么.
mov ax,data ;数据段地址赋给AX
mov ds,ax ;再赋给DS和ES
mov es,ax
mov si,offset addr ;得到ADDR的偏移赋给SI
mov di,si ;把ADDR的偏移赋给DI
cld ;置方向位
mov cx,N ;一共有多少个数据
NEXT:lodsb ;把ds:si的值加载给al 同时si加1
inc al ;al加1
stosb ;把al的值存入es:di的位置
loop NEXT ;这个你懂吧
mov ax,data ;数据段地址赋给AX
mov ds,ax ;再赋给DS和ES
mov es,ax
mov si,offset addr ;得到ADDR的偏移赋给SI
mov di,si ;把ADDR的偏移赋给DI
cld ;置方向位
mov cx,N ;一共有多少个数据
NEXT:lodsb ;把ds:si的值加载给al 同时si加1
inc al ;al加1
stosb ;把al的值存入es:di的位置
loop NEXT ;这个你懂吧
全部回答
- 1楼网友:山河有幸埋战骨
- 2021-02-05 01:28
mov bx, offset buf
mov cx, 128
lop:
mov dx, 0010h ;状态口地址
in al, dx ;输入状态
and al, 10000000b ;保留d7
jnz lop ;非零转移
mov al, [bx] ;取出数据
mov dx, 0008h ;数据口地址
out dx, al ;输出
loop lop ;循环128次
hlt
就这些,即可将内存中首地址为buf的存储区内的128字节数据向crt终端输出。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯