目录
P1
Details
Answer
- 如图(不变)
- 还是如图 CS=076CH SS=076BH DS=076AH
- X-2 X-1
P2
Details
Answer
-
- 如图(不变)
- 还是如图 CS=076CH SS=076BH DS=076AH
- X-2 X-1
- ceil(N/16)*16 //实数除法
P3
Details
Answer
- 如图(不变)
- 没错,复制粘贴的 CS=076AH SS=076EH DS=076DH
- X+3 X+4
P4
程序3。
未指定程序入口时,程序默认按照顺序从头开始执行,此时1,2执行的是被当作指令的数据 [heimu title=”你知道的太多了”]whatever..[/heimu]。
……话虽然这么说……但是实际上好像没有出问题。
如果数据对应的是一些人畜无害的指令的话,那可还镇可能不会出什么问题。但是这个东西就和内存泄露、堆栈溢出、缓冲区溢出一样,可能现在不会出问题,以后说不好了。
P5
相加前
相加后
这里直接使用了三个段寄存器来表示三个段,实际上只用一个也可以,就是感觉写起来有点丑。[heimu]或许是强迫症?[/heimu]
P6
[heimu]可以贴源码,但没必要[/heimu]相加前
相加后
SUMMARY
[heimu]It sucks.[/heimu]做得比较不舒服的一次实验。
前几章的基础知识部分总结略。
我一直尝试去了解assume 的含义,但是最后也只弄得一知半解,比较难受。目前的理解是,如果assume 的与实际的不符,会引起汇编器的误解,但是文章[1]中只说了变量这一种情况。段的话还是比较好理解的,没有什么问题。
关于end start 具体是如何实现的、应用程序的入口entry point 到底是怎么指定的,我也没能找到合适的对应的资料。我自己也尝试了一下,之前写的代码中,所有的start 改成main 也是没有问题的。感觉下面这个[2]还能勉强解释一下。(TASM 语法)
The Closing
- The last lines of an assembly language program are the closing
- Indicates to assembler that it has reached the end of the program and where the entry point is
END MAIN ; entry point for linker use
- END is a pseudo-op; the single “operand” is the label specifying the beginning of execution, usually the first instruction after the .code pseudo-op
REFERENCE
- https://stackoverflow.com/questions/35251407/the-use-of-assume-directive-in-8086-instruction-set
- http://www.shsu.edu/~csc_tjm/fall2002/cs272/intro_to_asm.html
本作品使用基于以下许可授权:Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.