曲曲的秘密学术基地

纯化欲望、坚持严肃性

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


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

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

汇编语言 第七章总结 实验6 Debug跟踪问题7.9

问题7.9

编程,将datasg段中每个单词的前4个字母改为大写字母。

assume cs:codesg, ss:stacksg, ds:datasg

stacksg segment
  dw 0,0,0,0,0,0,0,0
stacksg ends

datasg segment
  db '1. display      '
  db '2. brows        '
  db '3. replace      '
  db '4. modify       '
datasg ends

codesg segment
  start:
codesg ends

end start

数据结构分析如下图:

figure

assume cs:codesg, ss:stacksg, ds:datasg 
stacksg segment
	dw 0,0,0,0,0,0,0,0
stacksg ends

datasg segment
  db '1. display      '
  db '2. brows        '
  db '3. replace      '
  db '4. modify       '
datasg ends

codesg segment
  start: mov ax, stacksg
         mov ss, ax
         mov sp, 16  ;这里要把指针指到空栈的位置

         mov ds, ax
         mov bx, 0

         mov cx, 4
     s0: push cx
         mov si, 0

         mov cx, 4
      s: mov al, [bx+3+si]
         and al, 11011111b
         mov [bx+3+si], al

         inc si
         loop s

         add bx, 16
         pop cx
         loop s0

         mov ax, 4c00H
         int 21H
codesg ends
end start

对程序进行汇编与连接。并使用debug进行调试:

figure2

我们运行第一步后查看对应的栈内信息:

figure3

可以看出栈内情况,如stacksg一致。

figure4

经过第一轮大写修改后,可以看到数据段第一个字母被大写成功。

figure5

用p指令跳过循环后,观察数据段,第一行的前四个字母已经被大写成功。

同理,我们将所有循环执行完毕,观察改写情况,发现已经全部改写成功。

figure6

Last One

汇编语言 8.1 8.2 8.3 8.4(1) bx,si,di,bp 机器指令数据在哪 数据位置表达 寻址方式(1)直接寻址

首先规定寄存器(reg,register): ax,bx,cx,dx,ah,al,bh,bl,ch,cl,dh,dl,sp,bp,si,di;规定段寄存器(sreg, segment register): ds,ss,cs,es。8.1 bx、si、di和bp1.在8086CPU中只有bx,bp,si,di这四个寄存器可以在[...], 中来进行内存单元的寻址。比如:mov ax, [bx]mov ax, [bx+si]mov ax, [bx+di]mov ax, [bp]mov ax, ...…

汇编语言More
Next One

python 类和对象 (5) 一些相关的BIF

整理自小甲鱼鱼C论坛对类或者对象从属判断的内置函数issubclass(class, classinfo)如果第一个参数(class)是第二个参数(classinfo)的一个子类,返回True否则返回False 一个类被认为是其自身的子类 classinfo可以是一个类对象组成的元组,只要class是其中任何一个候选类的子类,则返回True 其他情况会抛出TypeErrorisinstance(object, classinfo)如果第一个参数(object)是第二个参数(class...…

pythonMore