assume cs:codesg,ds:data
data segment
db 'welcome to masm!'
data ends
codesg segment
start: mov ax,data
mov ds,ax
mov ax,0b8a0h ;让字符在第17行开始显示,此为段起始地址
mov es,ax
mov bx,3ch ;让字符在第30列显示
mov si,0
mov cx,16 ;原始数据含有16个字节
s: mov al,ds:[si]
mov es:[bx][si],al ;让字符在第17行开始显示
mov es:[bx][si].0a0h,al ;让字符在第18行开始显示
mov es:[bx][si].140h,al ;让字符在第19行开始显示
mov es:[bx][si].1e0h,al ;让字符在第20行开始显示
mov es:[bx][si].280h,al ;让字符在第21行开始显示
inc bx ;属性设置放在字符的下一个内存单元
mov byte ptr es:[bx][si],2h ;绿色 0000 0010b = 02h
mov byte ptr es:[bx][si].0a0h,24h ;绿底红字 0010 0100b = 24h
mov byte ptr es:[bx][si].140h,71h ;白底蓝字 0111 0001b = 71h
mov byte ptr es:[bx][si].1e0h,8ch ;闪烁高亮红字 1000 1100b = 8ch
mov byte ptr es:[bx][si].280h,49h ;红底高亮蓝字 0100 1001 = 49h
inc si
loop s
mov ax,4c00h
int 21h
codesg ends
end start
- [perryyang] 非常感谢,终于明白了,没有复制前的位移量以机器码的形式被复制到了S处,当读入指令到缓冲器后指针下移到 09/06 18:47
- [nice_future] 说下我的想法吧: 在程序编译到jmp short s1时,转换成的机器码是EBF6,意思是向前移动 09/06 12:53
- [acool] 正确。 内存中的信息被CS:IP指向时是程序,被DS指向时是数据 ------------- 01/25 17:22
- [acool] 不错,分析的都正确。 01/25 17:20
- [acool] 分析正确。 注意别丢了H。 01/25 17:19
- [perryyang] 呵呵,我也是还没入门,我的结论来自于书第6页最后一句,一个CPU有N根地址线,则可以说这个CPU的地 01/25 10:29
- [5331065] “10根导线可以传送10位二进制数据”那1根导线就是可以传送1位二进制数据 “一个CPU有N根地址 01/24 12:28
- [5331065] 我做了检测题1.1除了第一题其他全对,我想了第一题好久都想不清楚为什么是13能麻烦说清楚一点吗? 01/24 12:19