汇编语言学习

qq_25297753 2021-01-05 11:36:36
王爽老师的汇编语言,编写了一段:


assume cs:codesg,ds:datasg
datasg segment
db 'DEC'
db 'Ken Oslen'
db '137'
db '40'
db 'PDP'
datasg ends



codesg segment
start: mov ax,datasg
mov ds,ax ;指向DS数据段
mov si,0 ;从ds:si处开始



mov bx,60H ;偏移地址bx置60
mov di,0 ;目标地址
mov cx,20
s: mov ax,ds:[si]
mov word ptr ds:[bx+di],ax
inc si
inc di
loop s

mov word ptr [bx].0ch,38 ;排名字段改为38
add word ptr [bx].0eh,70 ;收入字段增加70

;mov di,0 ;用sp来定位产品字符串中的字符
;mov [bx+10].[di],'V'
;inc di
;mov [bx+10].[di],'A'
;inc di
;mov [bx+10].[di],'X'

mov ax,4c00h
int 21h
codesg ends
end start


执行到 loop s,查看076a:60的内容如下:

紧接着执行这两句
mov word ptr [bx].0ch,38 ;排名字段改为38
add word ptr [bx].0eh,70 ;收入字段增加70

结果如下:


出现了如图所示的结果,请帮忙分析谢谢
...全文
18264 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
HighPC 2021-02-13
  • 打赏
  • 举报
回复
这年头还有搞这个的不容易。看来你的问题是汇编的循环数不对吧,有部分字符没有处理到。 问题点在循环变量,希望上课还要好好学。
老皮芽子 2021-01-06
  • 打赏
  • 举报
回复
看不明白你要做什么?
qq_25297753 2021-01-06
  • 打赏
  • 举报
回复
感谢回复,和ASC码对应起来能看明白,执行ADD后还有一个30的16进制没有处理掉,这块如何改进呢,是否需要数据格式调整
老皮芽子 2021-01-06
  • 打赏
  • 举报
回复
bx=0060h ds=076ah 38=0026h mov word ptr [bx].0ch,38 这条指令执行结果 076a:006c = 0026h 076a:006c 26 076a:006d 00 70=46h 076a:006c = 3437h add word ptr [bx].0eh,70 这条指令执行结果 076a:006e = 3437h + 46h 076a:006e = 347dh 076a:006e = 7dh 076a:006f = 34h
qq_25297753 2021-01-06
  • 打赏
  • 举报
回复
把地址datasg起始的数据复制到ds:60H起始的内存区域

21,615

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧