实验任务1_1
在debug中将执行到line17结束、line19之前,记录此时:寄存器(DS) = _076A___, 寄存器(SS) =_076B_, 寄存器(CS) = 076C
假设程序加载后,code段的段地址是X,则,data段的段地址是_X-2H_, stack的段地址是_X-1H_
任务1-2
1在debug中将执行到line17结束、line19之前,记录此时:寄存器(DS) = _076A___, 寄存器(SS) =_076B___, 寄存器(CS) = _076C___
假设程序加载后,code段的段地址是X,则,data段的段地址是_X-2H_, stack的段地址是_X-1H_
任务1-3
1.在debug中将执行到line17结束、line19之前,记录此时:寄存器(DS) = _076A___, 寄存器(SS) =_076C___, 寄存器(CS) = _076E___
2.假设程序加载后,code段的段地址是X,则,data段的段地址是X-4H_, stack的段地址是X-2H_
任务1-4
1.在debug中将执行到line9结束、line11之前,记录此时:寄存器(DS) = _076C___, 寄存器(SS) =_076E___, 寄存器(CS) = _076A___
2 .假设程序加载后,code段的段地址是 X_,则,data段的段地址是_X+2H_, stack的段地址是X+4H_
任务1-5
实际分配给该段的内存空间大小是 16Byte
Task1_4.asm任然可以正常运行
原因:end除了通知编译器程序结束外,还可以通知编译器程序的入口在什么地方。在程序6.2中我们用end指令指明了程序的入口在标号start处。
尾指令end 描述了程序的结束和程序的入口。在编译、连接后,"end start" 指明的程序入口,被转化为一个入口地址,存储在可执行文件的描述信息中。
任务2
任务三
任务四
任务5
源代码中line19的作用是?
进行相与运算,结果-32,即把大写字母转化为小写字母
8位色彩代码用来控制输出颜色
任务6
任务7
assume cs:code, ds:data, es:table data segment db '1975', '1976', '1977', '1978', '1979' dw 16, 22, 382, 1356, 2390 dw 3, 7, 9, 13, 28 data ends table segment db 5 dup( 16 dup(' ') ) ; table ends code segment start: mov ax, data mov ds, ax mov ax, table mov es, ax mov bx, 0 mov bp, 0 mov cx, 5 years: mov ax, ds:[bx] mov es:[bp], ax mov ax, ds:[bx+2] mov es:[bp+2], ax add bx, 4 add bp, 10h loop years mov bp, 5 mov cx, 5 income: mov ax, ds:[bx] mov es:[bp], ax add bx, 2 add bp, 10h loop income mov cx, 5 mov bp, 10 people: mov ax, ds:[bx] mov es:[bp], ax add bx, 2 add bp, 10h loop people mov cx, 5 mov bp, 5 average: mov ax, es:[bp] mov bl, es:[bp+5] div bl mov es:[bp+8], al add bp,10h loop average mov ah, 4ch int 21h code ends end start
要求实现