왕쌍 어셈블러 실험 10.3

첫째, 실험적인 요구 사항

 

 둘째, 코드 구현

  1 가정 : CS 코드 DS : 데이터
   (2)  
  (3)  데이터 세그먼트
   4      DB 10 DUP ( 0 )
   (5)  데이터 단부
   (6)  
  (7)  코드 세그먼트
   8  개시 :       MOV의 AX, 12,666 
  9  
10              MOV를 BX, 데이터
 (11)              의 mov , DS를 BX
 12              MOV SI, 0 
13              
14              dtoc
 15  
16              MOV의 DH, 8             ; 定义行(0-24) 
17              MOVDL, . 3             , 정의 컬럼 (0-79) 
(18)는              MOV CL, 2             , 지정 색             
. 19               show_str         , 인쇄 문자 서브 루틴 호출 
(20)이  
21              MOV AX, 4c00h
 22는              INT 21H
 (23)가             
24  : DTOC        푸시 DX
 25              푸시 CX
 26은              푸시 AX
 (27)              누름 28              푸시 BX
 29              
30              MOV BX, 0         , 임시 저장소 자의 스택 변성 서브 프로그램, 저장하기 위해 사용 BX 비트 
31은              
32  S1 :         MOV CX ,. 1 0D         , D는, CX는 이외에 제조 진수 나타내는 
33              MOV , DX는 0 
(34)은              
35              DIV의 CX             ; 10으로 나눈 
36              MOV CX, AX를         , CX 할당 몫 
37 [              jcxz S2
 38 인              
39              추가 DX, 30H         ; 나머지 플러스 ASCII 코드 30H는 대응 수득 
40              푸시 DX
 (41)는              
42가              된다 INC BX
 43 인              JMP 짧은 S1
 44되는              
45  : S2          추가 DX, 30H         , 공급자가 0이고, 나머지 비트 인 경우 
46이고              푸시DX            
 47              INC는 BX             , 다시 스택 오퍼레이션 (상업적 0이고 나머지가 0이 아닌) 
48              
49              MOV CX, BX         , 스택에 총 BX 비트, 그래서 디지털 BX 순환되는 
50              MOV 실리콘을 0 
(51)은              
52 인  S3은 :          POP AX는             , 순차적으로 적층 지정된 데이터 부에 (메모리)에 데이터를 저장한다 
(53)가              
54              MOV [시] 알
 55              INC는 (56)가              
(57)가              루프 S3
 58                          
(59)  : 좋아        POP BX
 60              POP 61된다              POP AX
 62 인             POP CX
 (63)는              POP DX
 64              
65              RET 
66          
67  show_str :    푸시 CX
 (68)              누름 69  
70              MOV 알, 0A0h             , 각각 160 바이트의 행         
(71)가              온 12월 DH                 ] . 광고 0부터 번호 요구 감산 1 
72              MUL DH                 , 여행객을 추구 (결과는 도끼로 저장된) 오프셋 
(73)은              MOV를 BX, AX             , 임시 행 오프셋을 등록 BX 
74              
75              MOV 알, (2)               , 라인 (2 개) 캐릭터 
(76)              12월에서DL은                 , 열 번호 시작 0으로부터 감산해야 1. 
77              MUL DL을                 , 결정된 열 (결과는 도끼로 저장된) 오프셋 
78                      
79              추가 BX, AX             , 캐릭터가 가산되어, 행 오프셋 및 열 제 어드레스 메모리 스트링 오프셋 어드레스 
80              
81              
82              MOV AX, 0b800h         , 메모리 세그먼트 어드레스 
83 개              MOV의 ES, AX             , 레지스터에 세그먼트 어드레스 기존 ES 저장 
84              
85              
86              MOV DI, 0             , 비디오 메모리 전송 열 값 
87              MOV CH, 0 
88              MOV 알, CL             , 하부의 색 데이터 레지스터 AX에 저장 
(89)             
90  S :           MOV CL, DS : [시]         , 전송 데이터 
(91)는              jcxz OK는                 , 데이터를 원래의 데이터로 모든 원시 데이터가 처리되었다는 것을 표시하는 시간을 0으로 시프트 
(92)                                    , 그 라벨 OK로 이동 
93              
94              MOV  ES : [BX + DI, CL     , 데이터를 전송 
(95)              MOV  ES는 : [DI + BX + . 1 , 알루미늄     , 투과 색상 
96              
97              INC는 실리콘                 , 프로세스 각 바이트 오프셋 증분 1 개. 
98              추가 DI, 2             , 처리 당 2 바이트 (데이터 및 컬러 속성을 포함), 오프셋 어드레스 2 증분 
99              JMP짧은 S
 100  
101  OK :          팝업 SI
 102              CX            
 103              RET 
104  코드 단부
 (105) 단부 개시

 셋째, 시스템 디버깅

계속되는

사진 첫번째 결과를 업로드

 

추천

출처www.cnblogs.com/TonyJia/p/12605974.html