(1)将2赋给AX,入栈;将'a'赋给AL,入栈。main通过栈传递参数。
MOV AX,0002
PUSH AX
MOV AL,61
PUSH AX
showchar通过栈接收参数,用bp指示参数的位置。
MOV BP,SP
MOV AL,[BP+04]
MOV BX,B800
MOV ES,BX
MOV BX,0690
ES:
MOV [BX],AL
MOV AL,[BP+06]
MOV BX,B800
MOV ES,BX
MOV BX,0691
ES:
MOV [BX],AL
...
- [younggay] 博主理解的还不错,printf就是靠%的个数来确定显示个个数的,然后根据%后面的进制字符来确定参数的 08/18 09:20
- [younggay] 其他的理解还可以,不过,建议博主综合研究的每一节都研究上两遍或三遍,有些理解会加深的。 07/30 14:37
- [younggay] (6)这两个文件中的程序大同小异,从程序开始到结束所有的指令都一样,不同的是具体的数值。 === 07/30 14:35
- [yesinol] 汇编学多了,一时没转过来。一次把字符和颜色写到一个字里就可以了。 07/29 16:00
- [crazyman] 编译只是对指定源文件中代码自身的处理,而连接就可能设计到你代码之外的程序了,所以,仅仅你自己的程序文 07/29 10:54
- [crazyman] 理解不错。 07/29 10:51
- [crazyman] 哈哈哈哈 07/29 10:49
- [mywiil] 不错,不过,第(2)题做的不对,题目要求是使用一条语句,而你用了两条。 提示: 你两条写了两个字 07/29 10:38
- [游客] 呵呵 ,有意思 还有这样写博客的 07/28 18:10
- [mywiil] 写软盘了,加油。 07/28 10:03
[2009-08-08 18:46] 研究实验5 函数如何接收不定数量的参数
阅读全文 |
评论次数(1) |
浏览次数(1130) |
所属类型(汇编作业)
[2009-07-29 18:18] 研究实验4 不用main函数编程
(1)编译没问题,因为源代码本身没有错误。连接环节出现了问题,显示的错误信息是:Undefined symbol '_main' in module C0S,该信息可能与c0s.obj有关。
(2)f.exe的程序代码总共有303字节。在Debug中不能正确返回,在遇到错误代码后会强制退出。该函数的偏移地址是0。
(3)m.exe的程序代码总共有4280字节。可以正确返回。m.exe和f.exe这二者的区别是,前者在程序前面有很多代码,main的偏移地址是1FAH。
(4)调用main函数的指令为CALL 01FA,其偏移地址为11AH。
返回指令为MOV AH,4C MO...
(2)f.exe的程序代码总共有303字节。在Debug中不能正确返回,在遇到错误代码后会强制退出。该函数的偏移地址是0。
(3)m.exe的程序代码总共有4280字节。可以正确返回。m.exe和f.exe这二者的区别是,前者在程序前面有很多代码,main的偏移地址是1FAH。
(4)调用main函数的指令为CALL 01FA,其偏移地址为11AH。
返回指令为MOV AH,4C MO...
阅读全文 |
评论次数(2) |
浏览次数(1079) |
所属类型(汇编作业)
[2009-07-28 18:37] 研究实验3 使用内存空间
(1)
5D1A:01FA 55 PUSH BP
5D1A:01FB 8BEC MOV BP,SP
5D1A:01FD C606002061 MOV BYTE PTR [2000],61
*(char *)0x2000='a';若只使用偏移地址,则放在数据段,占一字节
5D1A:0202 C70600200F00 MOV WORD PTR [2000],000F
*(int *)0x2000=0xf;占一个字空间
5D1A:0208 BB0020 MOV BX,2000...
5D1A:01FA 55 PUSH BP
5D1A:01FB 8BEC MOV BP,SP
5D1A:01FD C606002061 MOV BYTE PTR [2000],61
*(char *)0x2000='a';若只使用偏移地址,则放在数据段,占一字节
5D1A:0202 C70600200F00 MOV WORD PTR [2000],000F
*(int *)0x2000=0xf;占一个字空间
5D1A:0208 BB0020 MOV BX,2000...
阅读全文 |
评论次数(2) |
浏览次数(1123) |
所属类型(汇编作业)
[2009-07-28 17:34] 研究实验2 使用寄存器
(2)main函数的代码在代码段中。用debug的u命令反汇编ur1.exe,可以找到相关代码。
(3)main函数在代码段中的偏移地址是1FAH。main函数从本质上也是个子程序,需要被调用,main也就是这个子程序的入口地址,相当于子程序的标号。
(4)通过C语言源代码和汇编代码的对比可以看出二者差别不大,只是表达上有所不同。
5D0E:01FA 55 PUSH BP
5D0E:01FB 8BEC MOV BP,SP
5D0E:01FD B80100 MOV AX,0001
5D0E:0200 BB01...
(3)main函数在代码段中的偏移地址是1FAH。main函数从本质上也是个子程序,需要被调用,main也就是这个子程序的入口地址,相当于子程序的标号。
(4)通过C语言源代码和汇编代码的对比可以看出二者差别不大,只是表达上有所不同。
5D0E:01FA 55 PUSH BP
5D0E:01FB 8BEC MOV BP,SP
5D0E:01FD B80100 MOV AX,0001
5D0E:0200 BB01...
阅读全文 |
评论次数(1) |
浏览次数(1035) |
所属类型(汇编作业)
[2009-07-28 17:03] 研究实验1 搭建一个精简的C语言开发环境
只用tc.exe可以成功编译,但是无法成功连接。软件提示需要C0S.OBJ,EMU.LIB,MATHS.LIB,GRAPHICS.LIB,CS.LIB这5个文件。...
阅读全文 |
评论次数(1) |
浏览次数(1123) |
所属类型(汇编作业)
[2009-07-28 16:59] 空
空着课程设计2的地方,完成这个设计应该需要一段时间。...
阅读全文 |
评论次数(2) |
浏览次数(1110) |
所属类型(默认类型)
[2009-07-27 16:30] 实验17 编写保护多个功能子程序的中断例程
assume cs:code
code segment
start:
mov ax,cs
mov ds,ax
mov si,offset floppy
mov ax,0
mov es,ax
mov di,200h
mov cx,offset floppyend - offset floppy
cld
rep movsb
mov ax,0
mov es,ax
mov word ptr es:[7ch*4],200h
mov word ptr e...
code segment
start:
mov ax,cs
mov ds,ax
mov si,offset floppy
mov ax,0
mov es,ax
mov di,200h
mov cx,offset floppyend - offset floppy
cld
rep movsb
mov ax,0
mov es,ax
mov word ptr es:[7ch*4],200h
mov word ptr e...
阅读全文 |
评论次数(1) |
浏览次数(1056) |
所属类型(汇编作业)
[2009-07-27 16:14] 检测点17.1
“在int 16h中断例程中,一定有设置IF=1的指令。”这种说法对吗?
这种说法是对的。IF=1,即响应可屏蔽中断。若不置1,将无法获取键盘输入。...
这种说法是对的。IF=1,即响应可屏蔽中断。若不置1,将无法获取键盘输入。...
阅读全文 |
评论次数(1) |
浏览次数(780) |
所属类型(汇编作业)
[2009-07-26 16:48] 实验16 编写包含多个功能子程序的中断例程
安装一个新的int 7ch中断例程,为显示输出提供如下功能子程序:
(1)清屏
(2)设置前景色
(3)设置背景色
(4)向上滚动一行
assume cs:code
code segment
start:
mov ax,cs
mov ds,ax
mov si,offset setscreen
mov ax,0
mov es,ax
mov di,200h
mov cx,offset stscrend - offset setscreen
cld
rep movsb
mov...
(1)清屏
(2)设置前景色
(3)设置背景色
(4)向上滚动一行
assume cs:code
code segment
start:
mov ax,cs
mov ds,ax
mov si,offset setscreen
mov ax,0
mov es,ax
mov di,200h
mov cx,offset stscrend - offset setscreen
cld
rep movsb
mov...
阅读全文 |
评论次数(1) |
浏览次数(816) |
所属类型(汇编作业)
[2009-07-26 11:56] 检测点16.2
下面的程序将data段中的a处的8个数据累加,结果存储到b处的字中。补全程序。
assume cs:code,es:data
data segment
a db 1,2,3,4,5,6,7,8
b dw 0
data ends
code segment
start:
mov ax,data
mov es,ax
mov si,0
mov cx,8
s:
mov al,a[si]
mov ah,0
add b,ax
inc si
loop s
mov ...
assume cs:code,es:data
data segment
a db 1,2,3,4,5,6,7,8
b dw 0
data ends
code segment
start:
mov ax,data
mov es,ax
mov si,0
mov cx,8
s:
mov al,a[si]
mov ah,0
add b,ax
inc si
loop s
mov ...
阅读全文 |
评论次数(1) |
浏览次数(757) |
所属类型(汇编作业)
『 查看更多文章 』