这学期在学汇编,没怎么自己动手编程过,结果到了中期编不出程序来,实在太尴尬了
特此来补各个实验。
4-1
1 0:200~0:20b 为什么等同于 0020:0~0020b?
0:200 =0x16h+200=00200h
所以拆分成不同的形式即可转换
assume cs:code
code segment
mov ax,0200h
mov ds,ax ;将数据段内存进行更改
mov bx,0
mov cx,64
s:mov [bx],bx ;里面加的值是否默认为十进制
inc bx
loop s
mov ax,4c00h
int 21h
code ends
end
a.在汇编中 bx一般用于存储偏移地址 [bx] 即代表对应的偏移地址
b.8086/8088 的汇编语言里,以字母开头的16进制数字,前面必须加 0 如:0a3h
4-2
同上
4-3
a.使用debug调试程序,cx寄存器的初始值存储的内容就是此程序的大小
b.段寄存器支持从其他寄存器中赋值但不允许立即数直接复制给段寄存器(cs不能直接把存储的段地址赋给ds)
assume cs:code
code segment
mov ax,cs
mov ds,ax
mov ax,0020h
mov es,ax
mov bx,0
mov cx,0015h
s:mov al,[bx] ;mov操作一次是多少位的
mov es:[bx],al
inc bx
loop s
mov ax,4c00h
int 21h
code ends
end
操作数分类
立即数 存储器操作数 寄存器操作数