어셈블리 언어 - [BX, 및 사용 루프 복수의 세그먼트

설명 5.1 [BX] 및 메모리 유닛

메모리 셀의 설명을 완료하려면 두 가지 유형의 정보가 필요합니다

  • 메모리 주소 수단 :
    • 일 수 [0] 기본 세그먼트 어드레스의 메모리 셀에 0이 단위를 나타내는 오프셋 어드레스 나타내는 DS 하여;
    • 동일한 CAN도 사용될 BX : 오프셋된다 나타내고 메모리 셀 BX을 하며
  • 메모리 셀 (유형)의 길이 :
    • 로 메모리 유닛의 내용 AX는 ,이 메모리 셀의 길이, 단어가 저장되는 2 바이트 (워드 단위)이고;
    • 로 메모리 유닛의 내용을 이 메모리 셀의 길이가 1 바이트 (바이트 단위), 스토어 바이트이고;

5.2 루프 지시

루프 명령 및 CX 순환 기능을 달성하도록 협력 CX 저장된 사이클들의 수.
루프 명령 포맷은 다음 루프 라벨 은 CPU의 수행 루프 명령이 두 가지 작업을 수행 할

  • (CX) = (CX) - 1 ;
  • 분석 CX의 제로 하향 행하면 값이 아니라 제로는, 라벨에 프로그램의 실행으로 이동.
    그 프레임 워크 :
    mov cx, 循环次数
s:
    循环执行的程序段
    loop s

5.3 프로그램의 복수의 세그먼트를 포함

공간 제한 데이터보다 64킬로바이트보다 스택 코드를 요구하는 부분에 배치 될 수없는 경우, 모드 8086에서는, 데이터는,이어야 스택과의 대응 코드 코드 세그먼트 , 스택 세그먼트 , 데이터 세그먼트 ,
예를 들어 :

assume cs:code,ds:data,ss:stack
data segment
    dw 0001h,0002h,0003h,0004h,0005h,0006h,0007h,0008h  ;dw定义字形数据
data ends
stack segment
    db 0,0,0,0,0,0,0,0      ;定义字节型数据
stack ends
code segment
start: 
    mov ax,data     ;把数据段地址放入ax
    mov ds,ax
    mov ax,stack        ;把栈段地址放入ax
    mov ss,ax
    mov sp,18h  ;设置栈顶指向18h ,18h = 数据段8个字+栈段8个字节共24字节换成16进制。
    mov ax,4c00h
    int 21h
code ends
end start       ;end除了通知编译器程序结束外,还可以通知编译器程序的入口在什么地方。在这指明了程序的入口在标号 start 处。

추천

출처www.cnblogs.com/chengmf/p/12454670.html