曲曲的秘密学术基地

纯化欲望、坚持严肃性

欢迎!我是曲泽慧(@zququ),目前在深圳(ICBI,BCBDI,SIAT)任职助理研究员。


病毒学、免疫学及结构生物学背景,可以在 RG 上找到我已发表的论文

本站自2019年7月已访问web counter

汇编语言 6.1 在CS中使用数据

6.1 在代码段中使用数据

这里有个问题,我们希望使用loop的方法将如下数据累加和。

数据如下:

0123H、0456H、0789H、0ABCH、0DEFH、0FEDH、0CBAH、0987H

为此我们进行了编程,代码如下:

assume cs:code
code segment
  dw 0123H, 0456H, 0789H, 0ABCH, 0DEFH, 0FEDH, 0CBAH, 0987H  ;dw意为define word

  mov bx, 0
  mov ax, 0

  mov cx, 8

s:add ax, cs:[bx]
  add bx, 2
  loop s

  mov ax, 4c00h
  int 21h

code ends
end

对此我们进行编译与连接,并使用debug对其进行调试。

figure1

图中我们可以看到数据已经被拷贝到了对应的代码段内(076A:0000~076A:000F),然后我们通过-u命令查看机器指令。

figure2

奇怪的是,即使到了076A:000F,偏移地址已经超过了CS中所存储数据的总长度,仍然见不到我们所需要的指令。

原来,CPU错把存储在CS中的数据也当成了指令并进行了编译,运行程序一定会出错。

解决办法很简单,只需要人为指定一个入口,代码如下:

assume cs:code
code segment
  dw 0123H, 0456H, 0789H, 0ABCH, 0DEFH, 0FEDH, 0CBAH, 0987H  ;dw意为define word

start:  mov bx, 0   ;给定入口,供CPU识别出从哪里开始是指令代码
        mov ax, 0
      
        mov cx, 8
      
      s:add ax, cs:[bx]
        add bx, 2
        loop s
      
        mov ax, 4c00h
        int 21h
      
code ends
end start

总结一下end的用法:

  1. 通知编译器程序结束
  2. 通知编译器程序的入口在什么地方,所以入口的名称’start’可以自定义
Last One

二十面体不同转向的命名

以下是常用的二十面体转向名称,方便参考I1 对称性:cryosparc默认I2 对称性:relion默认I3 对称性:I4 对称性:eman2默认…

cryo-EMMore
Next One

python爬取ncbi检索信息的摸索

爬取前,先准备爬虫所需模块: requests bs4 openpyxl安装后,进行爬取。首先伪装user-agent:在浏览器中使用inspect功能寻找浏览器user-agent, 如图中红框所示:爬取代码如下:import requestsimport bs4import openpyxldef open_url(url): headers = {"user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) ...…

pythonMore