Phụ lục A

Mã ASCII có 128 kí tự chuẩn và hơn 128 mở rộng, chỉ sự chuyển đổi giữa các máy với nhau, giữa các nước với nhau.

Mã ASCII thay thế cho mã 16 bit với 65536 kí tự mà mỗi kí tự tuơng ứng với các cách sử dụng.

128 kí tự đầu tiên :

 DEC   0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
  HEX 0 1 2 3 4 5 6 7 8 9 A B C D E F
000 00 Nul                              
016 10                                
032 20 Spa ! " # $ : & ( ) * + , - . /
048 30 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
064 40 @ A B C D E F G H I J K L M N O
080 50 P Q R S T U V W X Y Z [ \ ] ^ _
096 60 ` a b c d e f g h y z k l m N o
112 70 p q r s t u v w x y z { | } ~ Nul

 Các mã từ 128 đến 255:

Các mã này được sử dụng với DOS, máy in, hoặc màn hình ANSI

 

0 Nul Kí tự NULL ( kết thúc một chuỗi )
7 Bel Kí tự Bell hoặc Beep
8 Bak Kí tự delete hoặc Backspace
9 Tab Kí tự Tab
10 Lf Lime Feed (bắt đầu một dòng mới)
13 Cr Mã Carriage Return
26 Eof Mã Dos End Of File
27 Esc Mã Escape
32 Spa Kí tự Space
255 Nul Thêm 1 ký tự Null

 

   

 

Chuyển đổi giữa nhị phân và hex :

CPU làm việc với mã nhị phân, có thể tạo ra số nhị phân bằng cách dùng công tắc điều chỉnh nút ON và OFF, nhị phân gồm số 0 và số 1. Bit đơn hoặc Bit nhị phân được chuyển đến CPU. Thông thường dữ liệu gồm 1 byte hay nhiều byte, 1 byte gồm 8 bit.

Ví dụ :  1byte gồm 8 bit chỉ có số 0 và số 1 : 0100 1011

 Cách sử dụng hệ thập lục phân trong việc đọc, nói,viết thì không tiện lợi bằng cách sử dụng hệ nhị phân, việc chuyển đổi giữa số nhị phân và số hex thì rất đơn giản, 1 byte sẽ được chia thành hai nhóm, mỗi nhóm gồm 4 bit.

Ví dụ :

Byte 01001011 được chia thành hai hóm bit : 0100 và 1011.

 Hệ thống số :

 

Nhị phân(Binary) Thập lục phân (Hexadecimal) Thập phân (Decimal)
0000 0 0
0001 1 1
0010 2 2
0011 3 3
0100 4 4
0101 5 5
0110 6 6
0111 7 7
1000 8 8
1001 9 9
1010 A 10
1011 B 11
1100 C 12
1101 D 13
1110 E 14
1111 F 15

 

Ví dụ 1: phân chia 1 byte thành hai :

                                             

          Kết quả là 4Bhex          :         4       B

            Ví dụ 2 : chuyển E7 thập phân sang nhị phân

7   -----------------------    0111   

Vậy     :          E7 -----------------------1110  01112 

   

 

 Bao gồm : lệnh số học, lệnh jump, lệnh move, lệnh compare, lệnh stack, procedures và interrupts, lệnh xuất - nhập, và các lệnh khác.

Các thanh ghi của CPU

Gồm 4 thanh ghi được được dùng cùng một mục đích là AL, BL, CL và DL.

 IP là con trỏ lệnh.

 SP là con trỏ ngăn xếp.

 SR là thanh ghi trạng thái, thanh ghi này gồm các loại cờ : I, S, O và Z.

Các  loại cờ :

Dùng để biểu thị ngõ ra của máy tính thông qua CPU. Các bit đơn trong thanh ghi trạng thái được sử dụng làm các cờ. Trong bộ mô phỏng này sử dụng các loại cờ :

Cờ S: là một cờ được đặt vào nếu việc tính toán đưa ra kết quả là(-)

Cờ O: là một cờ tràn, cờ này được đặt vào nếu kết quả đưa ra lớn hơn 8 bit.

Cờ Z : là cờ O, được đặt vào nếu kết quả đưa ra lớn hơn 8 bit.

Cờ I : là việc ngắt phần cứng.

Trên thực tế thì CPU có hơn 4 loại cờ kể trên.

Thanh ghi và các mã máy :

Các loại thanh ghi và các mã máy tương ứng như sau :

Tên thanh ghi :           AL       BL       CL       DL

Mã máy      :           00        01        02        03

Ví dụ : Cộng 1 vào thanh CL thì sử dụng lệnh như sau :

Mã biên dịch :                INC                   CL

Mã máy hex  :                 A4                   02

Nhị phân     :           1010 0100                   0000 0010

           

A4       : chỉ lệnh máy đưa đến lệnh INC

02        : chỉ thanh ghi CL

Trong trình biên dịch không có sự linh hoạt, mov thì tương tự như MOV và Mov. Mã thập lục phân không sử dụng hai mức như nhị phân.

 Hệ thống số Hex :

Hệ Hex bao gồm các con số như 15, 3C và FF.Khi biên dịch thì có thể chuyển tất cả các con số thành hệ hex. Các thanh ghi trong CPU thì sử dụng mã nhị phân, hex và thập phân, do đó cần xem chi tiết việc chuyển đổi qua lại giữa hex và nhị phân.

Hệ thống số âm :

Ví dụ như FE là 1 số (-).

Trong 1 byte thì 4 bit da số các bit bên trái được sử dụng như 1 bit sign, nó có giá trị là -128 . Các byte có thể thay đổi từ -128 đến 127 ( đối với số - ) và từ 0 đến 255

Lệnh chuyển đổi gián tiếp :

Ðược sử dụng khi cần chyển dữ liệu vào trong RAM, lúc đó dấu ngoặc vuông được bao ngoài dữ liệu cần chuyển.

Ví du :

 [15] : chỉ dữ liệu tại địa chỉ 15 hex được chuyển vào RAM. Khi chuyển dữ liệu vào thanh ghi thì cũng sử dụng dấu ngoặc vuông

Ví du� :

[BL] : đưa dữ liệu có trong thanh ghi BL chuyển vào RAM. Việc chuyển đổi này rất quan trọng và được sử dụng thường xuyên, thay vì đưa trực tiếp dữ liệu hoặc giá trị vào thanh ghi thì chuyển gián tiếp đến RAM. Việc di chuyển này được sử dụng thông qua con trỏ.

 

So sánh với chip 80X86 :

Ở  một mức độ nhớ các lệnh của hệ mô phỏng này thì được xem như các mã nhớ của trình biên dịch. Các chương trình trở nên thực tế hơn nhờ việc thực hiện các lệnh, nhưng lệnh set thì không thực hiện được. Trong bộ mô phỏng này thì các lệnh sử dụng theo CPU 8 bit, còn các loại CPU còn lại thì không dùng để mô phỏng. Trong phiên bản các lệnh CALL, RET, INT, RET và việc ngắt phần cứng không qua các thủ tục và việc ngắt thì vẫn có thể thực hiện được.

Người soạn thảo chương trình mong muốn các lệnh trong bộ mô phỏng này tương tự như các lệnh trong chip 80X86, lệnh MUL và DIV thì đơn giản hơn chip 80X86. Sự bất lợi khi tiếp cận bộ mô phỏng là kết quả tạo ra cờ tràn quá nhiều. Việc sử dụng lệnh ADD và SUB trong bộ mô phỏng này có thể thực hiện được.

Trong 80X86 thì khi tính toán việc sử dụng lệnh DIV bao gồm cả lệnh DIV và MOD nhưng trong bộ mô phỏng thì sử dụng hai lệnh đó riêng biệt nhau.

Việc tạo ra mã máy của chip 80X86 và bộ mô phỏng tương tự nhau, hai loại mã máy thì khác nhau, mã máy của bộ mô phỏng đơn giản và gọn hơn.

Với loại 80X86, thì lệnh MOV AL, 15 gồm hai byte; byte thứ nhất chứa MOV AL còn giá trị 15 đưa vào một byte khác, điều này tạo ra sự khác nhau khi kết nối các lệnh MOV với các thanh ghi và nó khác nhiều khi sử dụng mã OP.

     Bộ mô phỏng này cần 3 byte, MOV sử dụng 1 byte, loại mã OP, AL sử dụng 1 byte có mã 00. Dữ liệu 15 được đưa vào 1 byte, việc này tuy không hiệu quả nhưng rất đơn giản. 

Các lệnh :

 

�        ADD                                                 Cộng    

�        SUD                                                   Trừ

�        MUL                                                 Nhân

�        DIV                                                  Chia

�        MOD                                                Chia lấy phần dư

�        AND                                                 Và

�        OR                                                    Hoặc

�        XOR                                                 So sánh

�        INC                                                   Tăng lên 1

�        DEC                                                  Giảm đi 1

�        NOT                                                 Phủ định

�        ROL                                                  Xoay các bit qua trái

�        ROR                                                 Xoay các bit qua phải

�        SHL                                                  Dịch chuyển các bit qua trái.

�        SHR                                                  Dịch chuyển các bit qua phải.

 

    Các ví dụ trực tiếp:

 

    Mã biên dịch                                      Mã máy

ADD               AL, BL                       A0       00        01

SUB                CL, DL                       A1       02        03

MUL               AL, CL                       A2       00        02

            DIV                 BL, DL                       A3       01        03

            MOD               DL, BL                       A6       03        01

            AND               CL, AL                       AA      02        00

            OR                  CL, DL                       AB      02        03

            XOR               BL, AL                       AC      01        00

 

 

    Các ví dụ tức thời :

 

ADD               AL, 15                         B0       00        15

SUB                BL, 05                         B1       01        05

MUL               AL, 10                         B2       00        10

DIV                 BL, 04                         B3       01        04

MOD               DL, 20                         B6       03        20

AND               CL, 55                         BA      02        55

OR                  CL, AA                                   BB       02        AA

XOR               BL, FF                                    BC       01        FF

        Ví dụ :  

            ADD   CL, AL ; cộng thanh ghi AL và  CL sau đó kết quả đưa vào CL

ADD  AL, 22  ; cộng 22 vào thanh ghi AL sau đó kết quả đưa vào AL.

            Kết quả sau khi thực hiện phép cộng luôn luôn đưa vào thanh ghi đầu tiên.

DEC BL ; giảm 1 trong thanh ghi BL và kết quả đưa vào BL.

    Các cờ :

+ Ðặt cờ Z khi kết quả tính toán ra 0.

+ Ðặt cờ S khi kết quả tính toán ra (-).

+ Ðặt cờ O khi kết quả là tràn.

Việc tràn xảy ra khi kết quả việc tính toán lớn hơn số bit đưa vào thanh ghi. Với thanh ghi 8 bit thì số lớn nhất có thể là : -128 đến + 127. 

 

Với tập này, không sử dụng các loại cờ như Z, S hoặc O.

+ Tập lệnh :                            JMP     JZ        JNZ     JS        JNS     JO        JNO

+ Mã máy tương ứng :                        CO      C1       C2       C3       C4       C5       C6

. JMP   Jump                           : lệnh nhảy không có điều kiện.

. JZ        Jump Zero                : nhảy nếu cờ Z được đặt vào.

. JNZ     Jump Not Zoro                     : nhảy nếu cờ Z không được đặt vào.

. JS        Jump Sign                             : nhảy nếu có cờ Sign.

. JNS     Jump Not Sign                      : nhảy nếu cờ Sign không đặt vào.

. JO        Jump Overflow                    : nhảy nếu có cờ tràn (O) được đặt vào.

. JNO     Jump Not Overflow             : nhảy nếu cờ tràn (O) không được đặt vào.

�        Ví dụ :

JMP  HERE ; mã của trình biên dịch

CO       ??     ; đây là mã máy tương ứng

                         ; ?? địa chỉ mà người biên dịch cần tính toán

HERE :         ; nhãn mà ngưòi biên dịch sử dụng

                         ; khi việc tính toán đã hoàn chỉnh thì nhảy về địa chỉ

            Lệnh JMP là một trong tập lệnh của thanh ghi con trỏ, việc tính toán được thực hiện bởi người biên dịch, dùng lệnh này có thể nhảy tới hoặc nhảy về lại trong độ dài +127 đến - 128 đó chính là nguyên nhân tại sao các con số lớn nhất lại có thể được lưu trữ trong 8 bit của vùng nhớ.

            Các lệnh Jump khác thì làm việc tương tự, với điều kiện các cờ được đặt vào hoặc không.

HERE :           ; một loại nhãn hợp yêu cầu

HERE : :         ; không sử dụng được, chỉ cần một dấu hai chấm

1234 :  ; không sử dụng được, nhãn phải là ký tự chữ hoặc là dấu "_".

 

 

      Lệnh Move thực hiện giữa các thanh ghi với nhau .

            Dữ liệu được di chuyển từ thanh ghi này đến thanh ghi khác.

            Bộ mô phỏng thì không hỗ trợ loại lệnh này.

            Cú pháp của lệnh MOV này :

MOV               AL, BL

            Lệnh này sử dụng gọn hơn việc sử dụng hai dòng lệnh :

PUSH AL

POP                 BL

    Lệnh Move tức thời :

-         Sử dụng khi cần di chuyển một số nào đó vào một thanh ghi.

Ví dụ :

Lệnh                :           MOV               BL, 45

Mã máy          :           DO                  01, 45

Trong đó         :

DO      : mã máy của lệnh MOVE tức thời

01        : thanh ghi BL

45        : số cần chuyển vào thanh ghi BL

    Lệnh Move gián tiếp :

Dữ liệu được chuyển đổi giữa các thanh ghi và các vùng nhớ trong RAM.

Dữ liệu được đưa đến từ thanh ghi hoặc từ RAM, các địa chỉ trong RAM sử dụng lệnh này, ví dụ :

Lệnh                :           MOV               BL, [15]

Mã máy          :           D1                   01     15.

Trong đó         :

D1       : mã máy của lệnh move gián tiếp

01        : thanh ghi BL

15        : địa chỉ RAM

Dữ liệu được chuyển từ địa chỉ [15] trong RAM đến thanh ghi BL.

            Ðể chuyển dữ liệu từ 1 thanh ghi vào RAM.

            Ví dụ               :

            Lệnh                :           MOV   [13],BL

            Mã máy          :           D2         13       01

Trong đó         :

            D2       : chỉ mã máy cho một lệnh Move gián tiếp

            01        : thanh ghi BL

            13        : địa chỉ RAM

            Dữ liệu được di chuyển từ thanh ghi BL vào địa chỉ [13] trong RAM.

     Lệnh Move gián tiếp dùng trong thanh ghi :

            Một thanh ghi thường chứa các dữ liệu cần chuyển, một thanh ghi khác được lưu trữ trong vùng RAM.

            Ví dụ :

            Lệnh                :           MOV               DL,[AL]

            Mã máy          :           D3                   03        00

            Trong đó         :

            D3       : chỉ mã lệnh của lệnh Move gián tiếp dùng trong thanh ghi.

            03        : thanh ghi DL

            00        : thanh ghi AL

            Thanh ghi AL có dữ liệu được chứa trong RAM, dữ liệu được chuyển từ RAM sang thanh ghi DL.

            Dữ liệu cũng có thể di chuyển theo một hướng khác, ví dụ như :

Lệnh                MOV               [DL],   AL

Mã máy          D4                   03        00

            Trong đó :

            D4       : mã lệnh của thanh ghi sử dụng lệnh Move gián tiếp.

03        : thanh ghi D2

00        : thanh ghi AL

            Thanh ghi DL chứa dữ liệu có địa chỉ trong RAM. Dữ liệu được di chuyển từ thanh ghi DL vào RAM

 

 

-         Khi bộ mô phỏng cần so sánh hai giá trị với nhau thì dùng lệnh CMP.

-         Lệnh CMP sẽ thực hiện việc so sánh sau khi trừ hai giá trị đó với nhau.

  •      Nếu hai giá trị bằng nhau, lúc đo phép trừ có kết quả bằng 0, trường hơp này cờ Z sẽ được đặt vào.
  •       Nếu số bị trừ nhỏ hơn số trừ, thì sẽ không đặt cờ vào.
  •      Nếu số bị trừ lớn hơn số trừ, kết quả sẽ ra một số (-), trường hợp này cờ sign sẽ được đặt vào.

-  Có thể sử dụng lệnh JS, JS để kiểm tra lại kết quả khi sử dụng lệnh CMP.

     Lệnh so sánh hai thanh ghi : sử dụng hai thanh ghi để so sánh .

Ví dụ :

            Lệnh                CMP                Al, BL

Mã máy          DA                  00, 01

Trong đó         :

DA      : mã của lệnh so sánh hai thanh ghi.

00                 : thanh ghi AL

01                 : thanh ghi BL

. Nếu hai thanh ghi có giá trị bằng nhau, thì đặt cờ Z

. Nếu thanh ghi thứ nhất AL có giá trị lớn hơn thanh ghi thứ hai, thì đặt S

. Các trường hợp còn lại thì sẽ không đặt cờ vào.

     Lệnh so sánh tức thời :  so sánh giữa thanh ghi với một số bất kỳ.

            Ví dụ :

Lệnh                CMP                AL, 0D

Mã máy          DB                  00, 0D

            Trong đó         :

DB      : chỉ mã của lệnh CMP

00        : thanh ghi AL

0D       : con số cần so sánh

. Nếu giá trị của thanh ghi bằng với số cần so sánh, thì đặt cờ Z.

. Nếu thanh ghi có giá trị lớn hơn số thì đặt cờ S.

. Không đặt cờ cho các trường hợp còn lại.

            + Lệnh so sánh gián tiếp :  so sánh thanh ghi với một dữ liệu có địa chỉ chứa trong RAM

            Ví dụ

Lệnh                CMP                CL, [20]

Mã máy          DC                  02,   20

            Trong đó :

            DC      : mã lệnh.

02               : thanh ghi CL.

20             : dữ liệu có địa chỉ trong RAM cần so sánh với thanh ghi.

-         Nếu thanh ghi có giá trị bằng giá trị của con số, thì đặt cờ Z

-         Nếu thanh ghi CL có giá trị lớn hơn giá trị của số cần so sánh thì đặt cờ.

-         Các trường hợp còn lại thì không đặt cờ.

    

 

              Các lệnh này không sử dụng việc đặt cờ Z, S hoặc O

     Sau khi đưa các dữ liệu vào ngăn xếp, phải đặt đúng theo thứ tự đã bị đa ngược vì ngăn xếp làm việc theo quy tắc xử lý ngõ ra cuối cùng trước sau đó mới đến ngõ ra đầu tiên ( quy luật LIFO : last in first out ).

Ngăn  xếp được sử dụng để :

+ Lưu  nội dung của thanh ghi để sau đó khôi phục lại .

+ Ðưa các tham số vào thủ tục sau đó quay về kết quả

Nội dung của thanh ghi được lưu trữ trong ngăn xếp sau đó sẽ được khôi phục lại, ngăn xếp làm việc theo nguyên tắc LIFO ( vào sau cùng ra trước hết)

. Lệnh PUSH : được sử dụng để đặt dữ liệu vào ngăn xếp.

. Lệnh POP : được sử dụng để lấy dữ liệu ra khỏi ngăn xếp.

Ví dụ :

1) Lệnh           PUSH  BL

Mã máy           E0                    01

Trong đó : E0 : mã máy của lệnh PUSH

01       : thanh ghi BL

            2) Lệnh           POP                 BL

            Mã máy          E1                    01

            Trong đó :

                        E1 : mã lệnh POP

                   01   : thanh ghi BL

            Ngăn xếp có thể lưu trữ và khôi phục lại các cờ của thanh ghi.

            Ví dụ :

            1) Lệnh           PUSHF

 Mã máy          EA

            Trong đó :

                        EA : mã máy của lệnh PUSHF

           

            2) Lệnh           POPF

            Mã máy          EB

            Trong đó : EB mã của lệnh POPF

 

   

 

-         Sử dụng các thanh ghi sẵn có.

-         Không đặt cờ Z, O, S

 Các cờ và thanh ghi được lưu bởi các thủ tục hay ngắt và được khôi phục lại sau khi thủ tục hay ngắt hoàn thành công việc của nó.

. Sử dụng lệnh PUSH và PUSHF để lưu

. Sử dụng lệnh POP và POPF để phục hồi.

    Cách gọi một thủ tục:

Xem ví dụ sau :

Lệnh                CALL 30

Mã máy          CA                  30

CA : mã lệnh CALL

30  : địa chỉ bắt đầu của thủ tục được gọi

     Quay  trở lại từ một thủ tục :

Lệnh                            RET

Mã máy                      CB

Kết thúc một thủ tục thì sử dụng lệnh RET và quay trở về chương trình tới lệnh sau lệnh CALL. Mã máy của lệnh RET là CB.

     Cách gọi lệnh Interrup thông thường :

Lệnh                INT                 03

Mã máy          CC                   03

CC : mã lệnh của INT, 03 : địa chỉ của vectơ ngắt sử dụng bởi lệnh INT

03 : vectơ ngắt thuộc vùng lưu trữ RAM, đây là địa chỉ bắt đầu của mã ngắt. Chương trình nhảy về địa chỉ của mã ngắt và thực hiện việc ngắt.

     Quay  trở lại từ một lệnh ngắt :

Lệnh                IRET

Mã máy          CD

Mã  ngắt sau cùng là lệnh IRET, quay trở lại chương trình sử dụng lệnh A. Mã máy của lệnh IRET là CD.

Quay trở lại địa chỉ mà chương trình chuyển đến sau khi thực hiện việc ngắt và lưu trong ngăn xếp.

 

   

 

Không đặt các cờ Z, S, O

Các port được nối đến bộ mô phỏng và đưa ra ngoài.

IN        00 : đọc từ bàn phím, nhập từ bàn phím

OUT    01 : xuất dữ liệu ra điều khiển đèn giao thông

Ví dụ :

 Lệnh               IN        00

           Mã máy           F0        00

FO : mã máy của lệnh IN, dữ liệu được đưa vào từ  1 port

00     : chỉ số port mã dữ liệu xuất ra.

Bộ mô phỏng gồm có các port : 0HEX đến 0FHEX

Lệnh                OUT                01

Mã máy          F1                    01

F0 : mã máy của lệnh OUT, dữ liệu được đưa ra các port

01    : chỉ vị trí của port

    

 

            Bao gồm : HALT, MOP, CLO, ORG, DB, CLI, STI

            Các lệnh này không đặt các cờ Z, S, O

            Chú ý :

                          CLI : lệnh xóa cờ I

                          SET : lệnh đặt cờ I

�        Lệnh HALT : lệnh dừng chương trình

Lệnh                            HALT

Mã máy                      00

            00: mã lệnh của HALT

            Chương trình sẽ ngừng nếu gặp lệnh HALT, chương trình sẽ chạy lại nếu hủy bỏ lệnh này. Bạn có thể sử dụng một vài lệnh HALT trong một chương trình và chỉ sử dụng đúng một lệnh END.

�        Lệnh NOP :  không làm gì trong một chu kỳ xung

            Lệnh                            NOP

Mã máy                      FF

FF : chỉ mã của lệnh NOP.

            Chương trình sẽ không làm gì cho một chu kỳ xung clock, sau đó chương trình sẽ hoạt động trở lại. NOP được sử dụng như một thủ tục delay cho phép giữa các mạch điện với CPU và khi đó gọi là "trạng thái chờ ".

�        Lệnh CLO : đóng tất cả cửa sổ của các chương trình khác.

Lệnh                            CLO

Mã máy                      FE

FE : mã lệnh CLO

            Chỉ được sử dụng mã này trong bộ mô phỏng, và dùng để đóng các cửa sổ của chương trình khác. Việc này rất cần thiết vì màn hình lúc đó sẽ không có chương trình khác, không tạo ra sự lẫn lộn. 

�        Lệnh ORG : Mã gốc

Mã được phát sinh từ một địa chỉ bắt đầu lớn hơn 0, việc này thì hữu dụng để đặt các thủ tục , các ngắt hay bảng dữ liệu tại địa chỉ trong vùng nhớ.

ORG                30

Không có mã máy nào được phát ra nhưng địa chỉ thường đặt ở dữ liệu bắt đầu là 30

�        Lệnh DB : định nghĩa biến kiểu byte hay chuỗi

Là một cách tiện lợi khi đưa chuỗi mã ASCII vào vùng nhớ RAM

DB " HELLO"

Mã ASCII của "H,E,L,L,O" được chuyển vào RAM

DB  FF

Ðây cũng là một cách để chuyển giá trị Hex vào RAM.

            Có thể sử dụng để nhận biết sự kết thúc của chuỗi với mã ZERO, các vectơ ngắt có thể được chuyển vào cùng với DB. Bảng dữ liệu của mã Hex cũng được tải vào, mã của CPU có thể chuyển mô�t cách trực tiếp, nó làm việc tương tự như cách làm việc mà người biên dịch mong muốn.

�        Lệnh  CLI : xóa cờ I (xóa cờ cho phép ngắt)

Nếu cờ I bị xóa thì phần cứng bị ngắt. Ðây là trạng thái mặc định trong chương trình mô phỏng. Khởi động lại CPU thì cờ I vẫn bị xóa, trong thời gian bị ngắt thì phần cứng không làm việc.

�        Lệnh STI : thiết lập cờ I (lập cờ cho phép ngắt)

Nếu như cờ I được thiết lập thì bộ mô phỏng sẽ tạo ra lệnh INT 02  tại khoảng thời gian bình thường,việc này rất cần thiết khi có vector ngắt được lưu tại địa chỉ 02 mà chỉ đến mã điều khiển ngắt ở nơi khác. Nếu việc ngắt xuất hiện nhanh hơn việc xử lý thì việc phá huỷ hệ thống mô phỏng sẽ xảy ra. Ðiều chỉnh tốc độ xung clock CPU và khoảng thời gian để ngăn ngừa trường hợp này.

 

   

 

          Dec    Hex                  Dec    Hex                    Dec   Hex             Dec Hex  

         -128     80                    -127     81                    -126  82        -125     83

          -124     84                     -123     85                     -122    86             -121     87

          -120     88                     -119     89                     -118    8A            -117     8B

          -116     8C                     -115     8D                    -114    8E             -113     8F

          -112     90                     -111     91                     -110    92             -109     93

          -108     94                     -107   95                    -106    96             -105     97

          -104     98                     -103     99                     -102    9A            -101     9B

          -100     9C                     -099     9D                    -098    9E             -097     9F

          -096     A0                    -095     A1                    -094    A2            -093     A3

          -092     A4                    -091     A5                    -090    A6            -089     A7

          -088     A8                    -087     A9                    -086    AA           -085     AB

          -084     AC                    -083     AD                   -082    AE            -081     AF

          -080     B0                     -079     B1                     -078    B2            -077     B3

          -076     B4                     -075     B5                     -074    B6            -073     B7

          -072     B8                     -071     B9                     -070    BA           -069     BB

          -068     BC                    -067     BD                    -066    BE            -065     BF

          -064     C0                     -063     C1                     -062    C2            -061     C3

          -060     C4                     -059     C5                     -058    C6            -057     C7

          -056     C8                     -055     C9                     -054    CA           -053     CB

          -052     CC                    -051     CD                    -050    CE            -049     CF

          -048     D0               -047     D1                          -046    D2            -045     C3

          -044     D4                    -043     D5                    -042    D6            -041     D7

          -040     D8                    -039     D9                    -038    DA           -037     DB

          -036     DC                    -035     DD                   -034    DE            -033     DF

          -032     E0                     -031     E1                     -030    E2             -029     E3

          -028     E4                     -027     E5                     -026    E6             -025     E7

          -024     E8                     -023   E9                    -022    EA            -021     EB

          -020     EC                    -019     ED                    -018    EE            -017     EF

          -016     F0                     -015     F1                     -014    F2             -013     F3

          -012     F4                     -011     F5                     -010    F6             -009     F7

          -008     F8                     -007     F9                     -006    FA            -005     FB

        -004     FC                      -003     FD                   -002    FE            -001  FF    

   

 

      

          Dec       Hex                 Dec      Hex                 Dec      Hex                 Dec    Hex

          +000      00                    +001      01                    +002     02                     +003      03

          +004    04                      +005      05                    +006     06                     +007    07

          +008    08                      +009      09                    +010     0A                    +011    0B

          +012    0C                     +013      0D                   +014     0E                    +015    0F

          +016    10                      +017      11                    +018     12                     +019    13

          +020    14                      +021      15                    +022     16                     +023    17

          +024    18                      +025      19                    +026     1A                    +027    1B

          +028    1C                     +029      1D                   +030     1E                    +031    1F

          +032    20                      +033      21                    +034     22                     +035    23

          +036    24                      +037      25                    +038     26                     +039    27

          +040    28                      +041      29                    +042     2A                    +043    2B   

          +044    2C                     +045      2D                   +046     2E                    +047    2F

          +048    30                      +049      31                    +050     32                     +051    33

          +052    34                      +053      35                    +054     36                     +055    37

          +056    38                      +057      39                    +058     3A                    +059    3B

          +060    3C                     +061      3D                   +062     3E                    +063    3F

          +064    40                      +065      41                    +066     42                     +067    43

          +068    44                      +069      45                    +070     46                     +071    47

          +072    48                      +073      49                    +074     4A                    +075    4B

          +076    4C                     +077      4D                   +078     4E                    +079    4F

          +080    50                      +081      51                    +082     52                     +083    53

          +084   54                       +085     55                     +086      56                    +087    57

          +088   58                       +089     59                     +090      5A                   +091    5B

          +092   5C                      +093     5D                    +094      5E                   +095    5F

          +096   60                       +097     61                     +098      62                    +099    63

          +100   64                       +101     65                     +102      66                    +103    67

          +104   68                       +105     69                     +106      6A                   +107    6B

          +108   6C                      +109     6D                    +110      6E                   +111    6F

          +112   70                       +113     71                     +114      72                    +115    73

          +116   74                       +117     75                     +118      76                    +119    77

          +120   78                       +121     79                     +122      7A                   +123    7B

          +124   7C                      +125     7D                    +126      7E                   +127    7F